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