[Oracle/iBatis/Java] SelectKey Insert 후에 Key 값 바로 가져오기

[Oracle/iBatis/Java] SelectKey Insert 후에 Key 값 바로 가져오기

SelectKey

개발을 하다보면

INSERT => 특정 로직 수행 => UPDATE

이런 형태로 구현을 해야 할 때가 있다.

나의 경우 PUSH 서버를 구축하는데 필요했는데.

DB에 발송 정보를 먼저 INSERT 하고 (INSERT)

FireBase를 호출하여 PUSH를 발송하고 (특정 로직 수행)

해당 결과 값을 받아서 위에서 INSERT 한 데이터에 메시지 ID나 멀티캐스트 ID를 업데이트 해주고자 하였다. (UPDATE)

물론 해당 로직을 하기 위해서 java에서

SELECT 하여 KEY 값을 조회 후 값을 담기

=> 해당 KEY로 INSERT 수행

=> 로직 수행

=> 담아놨던 KEY로 UPDATE 수행

할 수도 있겠지만 코드는 쉽고 짧을 수록 좋은 법.

iBatis의 selectKey를 통해 Insert 하면서 동시에 key값을 받아오는 방법으로 처리 할 수 있다.

<insert id="insertUser" parameterClass="java.util.Map">
		<selectKey keyProperty="userCd" resultClass="Integer">
			SELECT SEQ_TEST.NEXTVAL FROM DUAL
		</selectKey>
		INSERT INTO USER(
				   	USER_CD,
				   	NAME
					)
			 VALUES (
					#userCd#,
					'테스트',
					)
	</insert>

위와 같이 XML 작성 하면

iBatis 에서 return 값으로 selectKey의 resultClass Object를 반환한다.


© 2020. DESH All rights reserved..

Powered by Hydejack v8.5.0