<selectKey> 이란?
RDBMS에서 지원하는 Sequence와 scope_identity등을 활용해서 insert시에 추가한 데이터에 기본키를 반환한다.
사용 예제
<insert id="InsUserInfoModel" parameterClass="UserInfoModel">
<selectKey type="pre" resultClass="int" property="UserOID">
SELECT ISNULL(MAX(UserOID),0) + 1 AS UserOID FROM T_USER_INFO
</selectKey>
INSERT INTO T_USER_INFO
(UserOID,
UserId,
UserNm,
UserTitle,
UserEmail,
CreateUs,
CreateDt)
VALUES
(#UserOID#,
#UserId#,
#UserNm#,
#UserTitle#,
#UserEmail#,
#CreateUs#,
GETDATE())
</insert>
예제 흐름
1. <insert>문 아래에 <selectKey> 가 먼저 실행하고 결과 값을 UserOID라는 변수(KeyProperty)로 parameterClass인 UserInfoModel의 UserOID 변수에 대입된다.
2. <selectKey>가 실행이 끝나면 아래 Insert SQL이 실행이 된다.(UserOID는 <selectKey에서 실행된 OID>)
3. <insert> 가 끝나면 호출한 Model로 UserOID를 반환
<selectKey>를 사용하는 이유
1. 생성된 값을 다음에 활용(insert)
2. 멀티 쓰레드에서 발생할 수 있는 문제 해결(두 개 이상의 스레드가 Insert 하게 되면 맨 마지막에 Insert한 데이터를 반환 함)
'IT > Ibatis' 카테고리의 다른 글
[Ibatis] Ibatis 설정 (0) | 2020.10.04 |
---|---|
[Ibatis] Ibatis 사용법 및 예제 (0) | 2020.09.29 |
[Ibatis] Dynamic Query SQL (0) | 2020.09.29 |
[Ibatis] Ibatis(아이바티스) 개념 (0) | 2020.09.28 |