본문 바로가기

Java/[iBatis]

Mybatis에서 방금 insert 시킨 테이블의 키값 가져오기

여러 테이블에 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);