[myBatis] myBatis에서 insert한 row의 id값 바로 가져오기
[myBatis] myBatis에서 insert한 row의 id값 바로 가져오기
DTO object 를 사용한다고 했을 경우
<!-- insert -->
<insert id="userCertifyInsert" parameterType="com.test.Builder.dto.UserCertify" useGeneratedKeys="true" keyProperty="userCertifyId">
insert into user_certify(user_certify_email, user_certify_num)
values(#{userCertifyEmail}, #{userCertifyNum})
</insert>
xml매퍼파일 insert문에서 주황색 글씨의 부분을 추가해준다.
keyProperty의 값은 DTO객체의 자동 증가 값에 해당하는 id 변수를 넣어주면 된다.
이제 id를 받아와야한다. 여기서 주의할 점 !!
int cnt = sqlSession.insert("com.test.Builder.sqlmap.UserCertifyMap.userCertifyInsert", userCertify);
int id = userCertify.getUserCertifyId();
나는 insert 함수 사용 후 리턴 값이 insert된 row의 id값인 줄 알고 1만 리턴해서 왜 안될까 계속 삽질 했다.. 맞게 다해놓고 ㅠㅠ
보다시피 리턴 값은 row의 개수이기 때문에 1만 나올수 밖에 없고 !
insert의 파라미터 객체로 들어간 userCertify 변수가 insert를 지나면서 수정된다고 한다.
즉 객체의 게터함수를 통해 id값을 가져오면 되는 것이다..
혹시나 왜 안되나 삽질하시는 분들을 위해 기록ㅎㅎ