본문 바로가기

YES! I CAN

[MyBatis] Insert 시, Select Key 에서 다중 필드 추출

[MyBatis] Insert 시, Select Key 에서 다중 필드 추출

 

MyBatis 3.2.6 버전부터 multiple fields in a select key 가 지원되어 select key 에서 다중으로 값을 뽑아낼 수 있다고 한다.

pom.xml에서 mybatis 버전을 확인한다.

3.2.6 이상이라면 아래와 같이 이용한다.

 

<insert id="insertDpt" parameterType="DptVO">
		<selectKey keyProperty="seqno,ordNo" resultType="DptVO" order="BEFORE">
			SELECT
				(
					SELECT
						COALESCE(MAX(seqno), 0) + 1
					FROM dpt
				) AS seqno
				, (
					SELECT
						COALESCE(MAX(ord_no), 0) + 1
					FROM dpt
					WHERE up_seqno = #{upSeqno}
				) AS ordNo
		</selectKey>
		INSERT INTO dpt (
		seqno
		, comp_seqno
		, up_seqno
		, dpt_nm
		, ord_no
		)
		VALUES(
		#{seqno}
		, #{compSeqno}
		, #{upSeqno}
		, #{dptNm}
		, #{ordNo}
		)
	</insert>