데이터베이스/MyBatis

insert할때 자동으로 생성되는 키값 가져오기 [미완]

backend dev 2023. 2. 1.

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 하위 엘리먼트에 의해 리턴된 키를 셋팅할 프로퍼티를 지정. 디폴트는 셋팅하지 않는 것이다. 여러개의 칼럼을 사용한다면 프로퍼티명에 콤마를 구분자로 나열할수 있다.

 

 

 

 

 

 

[MyBatis] insert할때 자동으로 키 생성하기(useGeneratedKeys과 selectKey방식 차이점)

😎 insert할때 자동으로 번호를 올리고 싶어방금 insert한 autoincrement가 걸린 PK값을 바로 사용하고싶다면 어떻게 해야할까?두가지방식이 있다. useGeneratedKeys와 keyProperty 사용하기 selectKey 사용하기이

sowon-dev.github.io

 

 

MyBatis – 마이바티스 3 | 매퍼 XML 파일

Mapper XML 파일 마이바티스의 가장 큰 장점은 매핑구문이다. 이건 간혹 마법을 부리는 것처럼 보일 수 있다. SQL Map XML 파일은 상대적으로 간단하다. 더군다나 동일한 기능의 JDBC 코드와 비교하면

mybatis.org

 

댓글