[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값을 가져오면 되는 것이다..
혹시나 왜 안되나 삽질하시는 분들을 위해 기록ㅎㅎ
'Java & JSP' 카테고리의 다른 글
[Java] 접근 제어자(access modifier) (0) | 2019.01.17 |
---|---|
임시 (0) | 2018.11.01 |
[JSTL] <c:foreach> status 변수 활용 (0) | 2018.09.19 |
[Java] 날짜 더하기, String<->Date 변환, Calender->String 변환 (0) | 2018.09.06 |
[MySQL] mac에서 mysql 접속 오류 해결 (user/local/mysql/data directory is not owned by the mysql or _mysql user) (0) | 2018.08.29 |