공부/프로그래밍

[Spring] Mybatis 에서 Insert 시 자동 생성키 이용하기

demonic_ 2017. 4. 20. 13:40

########### Mysql의 경우

테이블 스키마에 AUTO_INCREMENT 를 설정할 경우 자동으로 생성된다.

AUTO_INCREMENT 로 생성된 Key 값이 필요한 경우 사용하는 방법이다.


Insert를 할때는 아래와 같이 Mapper에 코딩할 것이다

# useGeneratedKeys 를 true로 넣어줘야 함.

<Insert id="insertData" useGeneratedKeys="true" keyProperty="id">

/* query */


</insert>


실행을 정상적으로 완료하면 Insert 된 행의 ID값을 가지는데 이 ID값은 DataClass에 선언되어있는(Map 형태일 경우 key 값이 ID) 필드에 저절로 들어가고 Java단에서 호출이 가능해진다.



########### ORACLE의 경우

오라클은 AUTO_INCREMENT 가 없고 Sequence에서 값을 가져와서 Insert를 해줘야 하기 때문에 아래와 같이 한다.

<Insert id="insertData">

<selectKey keyProperty="id" resultClass="int">

SELECT SEQ_ID.nextval From DUAL

</selectKey>


/* query */

insert into test(id, msg)

values(#{id}, #{msg})

</insert>


만약 키값을 가져오는 부분이 String 이라면 resultClass="String" 으로 변경한다.