헬린코린이

[Spring] mybatis selectKey 본문

Programming/Spring Framework

[Spring] mybatis selectKey

HCD 2023. 8. 9. 09:34

스프링의 마이바티스에서

디비에 insert 하는 과정 중에 

한 메서드에서 두개의 insert를 실행할 때 1번째 실행했던 insert의 id 값을

두 번째 insert구문에 id로 넣어야 하는 상황이 있을 것이다

 

저도 처음에는 이런 기능을 몰라 SELECT MAX(id) FROM [테이블] 첫 번째 테이블의 가장 높은 값 

즉 가장 최근의 값을 가지고 오는 서브쿼리를 두번째 insert구문의 집어넣었다 

이것도 나쁜 방법은 아닌데 좋지는 않다

 

하지만 mybatis에서 selectKey 기능을 제공해준다.

<selectKey resultType="int" keyProperty="permitId" keyColumn="id" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>

 

resultType 은 쿼리의 결과를 어떤 데이터 타입으로 반환할지 정의합니다.

keyProperty는 객체의 어떤 속성 매핑할 것인지 지정합니다.

keyColumn 방금 입력한 값의 칼럼을 keyProperty에 매핑합니다.

order는 키를 얻는 시점을 말합니다.

 

SELECT LAST_INSERT_ID() 함수를 이용 pk값을 가져옵니다

Comments