Development/JAVA

직전에 쌓인 키값을 가져오기(Mybatis selectKey)

루루지 2022. 1. 23. 19:40
반응형

 

상황 : 하나의 service딴에서 데이터 INSERT를 하고, INSERT된 키의 값을 가져와 처리해야하는 로직이 있었다.

ex) A테이블에 데이터 INSERT 후, 바로 이어서 A테이블의 키값을 외래키로 B테이블에 INSERT

 

Mybatis의 selectKey로 해결 가능.

 

사용 코드

<insert id="insertQuery" parameterType="com.model.Param">
INSERT INTO A (TITLE, CONTENT)
VALUES (#{title}, #{content})
    <selectKey resultType="Integer" keyProperty="id" order="AFTER">
		SELECT LAST_INSERT_ID()
	</selectKey>
)
</insert>

// 위에서 받은 값을 사용하고 싶으면 해당쿼리를 사용하고 아래와 같이 받아올 수 있다.
Param.getId();

 

설명

SELECT LAST_INSERT_ID()은 mysql에서 사용가능.

- 방금입력한 테이블의 auto_increment로 증가된 컬럼값을 가져오는 쿼리

keyProperty 값은 insert에 사용되는 parameterType의 값중 리턴 받고 싶어하는 필드를 입력하면 된다.