2가지 방법이 존재
1. useGeneratedKeys와 KeyProperty사용하기
<insert id="createReview" useGeneratedKeys="true" keyProperty="reviewId" parameterType="CreateReviewRequest">
insert into review (content)
values (#{content})
</insert>
public class CreateReviewRequest {
private long roomId;
private long userId;
private long reviewId;
private long reservationId;
private String content;
review라는 테이블에 데이터를 생성하면 AUTOINCREMENT 덕분에 review테이블의 id라는 컬럼의 값이 알아서 증가되면서 들어간다.
그때 방금 생성된 로우(레코드,튜플)의 id값을 가지고싶다면 useGeneratedKeys와 KeyProperty사용를 사용한다.
항상 useGeneratedKeys와 KeyProperty는 함께사용해야한다.
useGeneratedKeys는 자동으로 생성된 키를 가져올 수 있는 속성으로 true로 설정한다
KeyProperty는 가져온 키값을 어디다가 저장할지를 지정한다. 위의 예시의경우 전달된파라미터.reviewId에 저장된다.
useGeneratedKeys | (입력(insert, update)에만 적용) 데이터베이스에서 내부적으로 생성한 키 (예를들어 MySQL또는 SQL Server와 같은 RDBMS의 자동 증가 필드)를 받는 JDBC getGeneratedKeys메소드를 사용하도록 설정하다. 디폴트는 false 이다. |
keyProperty | (입력(insert, update)에만 적용) getGeneratedKeys 메소드나 insert 구문의 selectKey 하위 엘리먼트에 의해 리턴된 키를 셋팅할 프로퍼티를 지정. 디폴트는 셋팅하지 않는 것이다. 여러개의 칼럼을 사용한다면 프로퍼티명에 콤마를 구분자로 나열할수 있다. |
댓글