개발/Database

MyBatis/iBatis] 방금 INSERT 된 Key 가져오기

신매력 2012. 9. 5. 11:00

 

여러 테이블에 insert를 해야되는데,

방금 insert 된 그 PK를 다른테이블에서 써야할 때...

 

select를 해올수도 없고 그럴땐???

 

 

1. MyBatis

 

 <insert id="insertData" parameterType="DataClass" useGeneratedKeys="true" keyProperty="id">


     /* query */


</insert>

 

 

id가 autoincrement인 PK일 경우, 

여기서 insert 된 행의 id 값을 가져오게 된다.

 

그 id값은 DataClass에 선언되어있는 id 필드 안으로 값이 저절로 들어간다.

java단에서 DataClass 객체의 id값을 보면 값이 들어있을 것이다.

 

 

 

2. iBatis

 

<insert id="insertData" parameterType="DataClass" useGeneratedKeys="true" keyProperty="id">


     /* query */


   <selectKey keyProperty="id" resultClass="int">
        SELECT LAST_INSERT_ID()
   </selectKey>
</insert>

 

 

id 값을 리턴 받는 곳은

DAO 클래스에서 insert문을 호출하는 구문에서 값을 리턴 받으면 된다.

 

int id = commonDB.insert(NAMESPACE + "insertData", dataClss);

 

 

 

 

iBatis에서는 insert 하는 구문에서 리턴을 해주므로 assign을 수동으로 해줘야 되는데 

myBatis는 저절로 된다~