맞닥뜨린 상황은 이러하다.
insert를 하면서 pk 컬럼(push_send_seq)이 auto_increment로 증가하고 이 값을 즉시 사용해야만 했다.
<insert id="insertPushSend">
INSERT INTO push_send(...) VALUES(...)
<selectKey keyProperty="push_send_seq" resultType="long" order="AFTER">
SELECT LAST_INSERT_ID() AS push_send_seq
</selectKey>
</insert>
위와 같이 마이바티스 코드를 짰더니 LAST_INSERT_ID 함수에 의해 출력되는 값이 1로 고정되었다.
구글링을 해보니 마지막에 +1이 된 push_send_seq를 가져오는 것이 아닌 row count를 갖고 온 것이다.
그렇다면 어떻게 해야 할까?
위의 방법을 인지하기 전에 코드는 아래와 같았다.
long push_send_seq = pushService.insertPushSend(pushSendDomain);
그러면 push_send_seq는 계속 1만 갖게 되므로 코드를 아래와 같이 바꿔야 한다.
long rowCount = pushService.insertPushSend(pushSendDomain);
long push_send_seq = pushSendDomain.getPush_send_seq();
이로써 push_send_seq에는 pk의 +1이 증가된 값이 들어있는 것을 확인할 수 있다.
참고로 위의 마이바티스 코드를 아래와 같이 작성해도 된다.
<insert id="insertPushSend" useGeneratedKeys="true" keyProperty="push_send_seq">
INSERT INTO push_send(...) VALUES(...)
</insert>
이게 더 깔끔한 것 같다.