자동 생성 키
많은 관계형 데이터베이스 시스템은 기본키(primay key)필드의 자동생성을 지원한다.
SQL Map은 <insert>요소의 <selectKey>를 통해 자동생성키를 지원
선생성키(pre-generated - 오라클의 sequence) 와 후생성키(post-generated - MS-SQL의 @@identity)를 지원
선생성키의 예 (Oracle)
<!—Oracle SEQUENCE Example -->
<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="id" >
SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
</selectKey>
insert into PRODUCT (PRD_ID,PRD_DESCRIPTION)
values (#id#,#description#)
</insert>
간혹 Sequence를 이용하지 않고 아래와 같이 Max+1로 사용하기도 하는데 이는 사용하기에 적합하지 않다.
<selectKey resultClass="int" keyProperty="id" >
(SELECT NVL(MAX(PRD_ID), 0) + 1 FROM PRODUCT)
</selectKey>
후생성키의 예
(MsSQL)
<!— Microsoft SQL Server IDENTITY Column Example -->
<insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">
insert into PRODUCT (PRD_DESCRIPTION) values (#description#)
<selectKey resultClass="int" keyProperty="id" >
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
(MySQL)
<insertid="insertProduct-MYSQL"parameterClass="product">
insert into PRODUCT (PRD_DESCRIPTION) values (#description#)
<selectKeyresultClass="int"type="post"keyProperty="id">
select LAST_INSERT_ID() as value
<selectKey>
<insert>
참조 : iBatis-SqlMaps-2_ko.pdf
'Programming > iBatis' 카테고리의 다른 글
ClassMap을 이용한 복합(Complex) Properties (0) | 2012.12.27 |
---|---|
iBatis - Iterate (1) | 2012.11.16 |
QueryForList와 QueryForMap의 차이 예 (0) | 2012.04.09 |
QueryForObject, List, Map (0) | 2012.04.09 |
iBatis - 동적쿼리 (0) | 2012.04.06 |