spring mybatis - selectKey 사용하기

jinvicky·2023년 4월 6일
0

2023 Spring Project TIL

목록 보기
31/32

카카오 소셜 로그인, 가입을 진행 중이다.
신규 로그인인 경우, 회원에 정보를 insert하고 다시 idx를 얻어서 selectUser(int idx)한 다음에 그 User 객체를 session에 넣는 것이 목표였다.

근데 mybatis의 selectKey 태그 문법을 아무리 써도 계속
idx가 0이 나오는 것이었다.......

해결:
먼저 idx(테이블 내에서 자동 증가하는 컬럼, 보통 id라고 블로그에 많이 나온다.)는 sql문의 결과값이 아니다.

내가 dao로 User객체를 전달하면 sql문이 실행되고 전달한 user객체의 idx 변수에 insert한 유저의 idx가 담긴다.
daoImpl을 수정했다.
(map이 아닌 그냥 객체를 던지도록, 그리고 insertSocialUser는 insert한 객체의 idx를 리턴한다)

@Override
public int insertSocialUser (User user) throws Exception {
    session.insert(nameSpace + "insertSocialUser", user);
    return user.getIdx();
}

//테스트 코드
daoTest.java

@Test //OK
public void insertSocialUser () throws Exception {
    User user = User.builder().email("test16@naver.com").nick_nm("테스트16").login_tp_cd(2).build();
    int result = dao.insertSocialUser(user);
    int idx = user.getIdx();
    log.info("result=" + idx);
    assertTrue(result != 0);
}

참고자료
https://marrrang.tistory.com/28

https://yookeun.github.io/java/2014/07/11/mybatis-selectkey/

https://uslcho.tistory.com/entry/selectKey-%EA%B0%92-DAOImpl%EC%97%90%EC%84%9C-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0

https://marrrang.tistory.com/28

profile
Front-End와 Back-End 경험, 지식을 공유합니다.

0개의 댓글

관련 채용 정보