본문 바로가기

SQL/Mybatis Framework6

[Mybatis] entity mapping to camel case User 테이블에 있는 정보를 User 객체에 매핑하는 쿼리를 아래와 같이 짰다. SELECT user_id AS user_id , user_name AS user_name , tel AS tel , email AS email FROM users WHERE user_id = 'hajs' 근데 어째서 연락처랑 이메일만 가져오게 된걸까? 이유는 mybatis alias 을 snake-case 로 작성했기 때문이다. 그렇기 때문에 application.yml 또는 application.properties 에 아래와 같이 camel-case 로 매핑될 수 있도록 설정을 추가하자 :) mybatis.configuration.map-underscore-to-camel-case=true yml 로 작성하시는 경우엔 .. 2021. 7. 13.
[Mybatis] update 문 parametertype 을 map 으로 받아 foreach 처리하는 방법 서비스를 하다가, 모든 유저의 이름을 '홍길동' 으로 바꿔야 할때. 그 객체를 Map 으로 가지고 있는 경우에 대해 포스팅하겠습니다. (위에서 언급한 '그' Map 객체) // Map 구조 (id:userName} 'hajs' = {'홍길동'}, 'user01' = {'홍길동'}, 'user02' = {'홍길동'}; 우선 Mapper 에서 param 을 Map 으로 전달해주고, void updateUserName(@param("userNameMap") Map userNameMap); xml 에서는 (아래처럼) update 문에 foreach 돌리면서 처리하면 된다. UPDATE user SET user_name = CASE WHEN user_id = #{userId} THEN #{user_name} EN.. 2020. 5. 18.
[MyBatis] PK가 없으면 INSERT, 있으면 UPDATE -> LIST 로 처리하기 개발자라면 한 번 쯤은 들어봤을.. 있으면 INSERT, 없으면 UPDATE .. Model 을 하나씩 받아서 처리하면 더할나위 없이 좋겠지만, Model 을 List 로 받아서 처리해야 될 때도 있다. 여기까진 단순하게 조금만 구글링하면 나온다. // in mapper void insertUserInfo(@Param("userInfoList") List userInfoList); // in xml INSERT INTO user_info ( user_no, user_id, user_name ) VALUES ( #{userNo}, #{userId}, #{userName} ) 근데 이제 여기서 userNo(PK라고 가정하자) 가 없으면 INSERT, 있으면 UPDATE 해야 된다면 ?? // in xml I.. 2020. 4. 2.
[MyBatis] #{} 와 ${} 의 차이 MyBatis Framework 를 사용하여 개발을 하다가 문득, 이런 생각을 했다. " 다른 사람들 코드를 보면 ${} 로도 하던데, 내가 쓰는 #{} 와 무슨 차이가 있을까? " 결론만 말하자면, #{} 는 String 을 표현해준다. 즉, 앞 뒤로 홀따옴표(') 를 붙여준다 :) INSERT INTO user ( id, name ) VALUES ( #{id}, #{name} ) --> VALUES ('homeju1', '홈주') 반면, ${} 는 있는 그대로를 표현해준다. 그렇기 때문에 숫자형을 사용할 때 좋다 :) INSERT INTO user ( id, age ) VALUES ( #{id}, ${age} ) --> VALUES ('homeju1', 26) 2020. 4. 2.
[MyBatis] SqlSessionFactoryBean 속성 정리 내가 매번 헷갈려서 쓰는 게시물. Spring + MyBatis 를 사용하면, DataSource 과 SqlSessionFactory 를 정의해서 빈으로 주입시켜줘야하는데, 그 중 SqlSessionFactoryBean 에서 크게 사용하는 3가지 속성에 대해서 정리하고자 한다. 1. typeAliasesPackage : Aliases 에 해당하는 클래스를 스캔하기 위한 패키지 경로를 지정 (별칭 쓸 클래스 패키지 위치 = 주로 DAO) -> com.example.demo.dao 2. configLocation : mybatis 설정파일이 위치한 경로를 지정 (주로 mybatis-config.xml 위치) -> mybatis-config.xml 또는 classpath:/mybatis-config.xml (.. 2020. 1. 8.
마지막에 추가한 데이터의 index 가져오는 방법 마지막 insert 한 row의 index 가져오는 방법메인프로젝트를 진행하면서 방금 추가한 댓글의 고유넘버를 가져와야 할 때 되게 간편하고 효과적이었다.* MyBatis 의 버전이 2.x 버전에서 3.x 버전으로 변경되면서 사용하는 방법이 다르니 참고* MySQL 과 MyBatis 사용 참고 1. 2.x 버전 => 태그와 keyProperty 활용123456789 SELECT LAST_INSERT_ID() INSERT INTO COMMENT (user_id, board_no, comm_time, comm_content) VALUES ( #{user.userId}, #{boardNo}, NOW(), #{commentContent} )Colored by Color Scriptercs3. 3.x 버전 => .. 2018. 7. 19.