헬린코린이
[Spring] mybatis selectKey 본문
스프링의 마이바티스에서
디비에 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