본문 바로가기

Java & JSP

[myBatis] myBatis에서 insert한 row의 id값 바로 가져오기

728x90
반응형

[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값을 가져오면 되는 것이다..



혹시나 왜 안되나 삽질하시는 분들을 위해 기록ㅎㅎ

728x90
반응형