Developer Factory

MyBatis/iBatis - 방금 INSERT 된 Key 가져오기 본문

Developer/DBMS

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

Jeremy.Park 2014. 7. 4. 16:14

여러 테이블에 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는 저절로 된다~


참고 : http://marobiana.tistory.com/23