IT/Ibatis

[Ibatis] <selectKey> 사용 예제

lejh 2020. 10. 11. 17:51

<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