여러 테이블에 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는 저절로 된다~
'개발 > Database' 카테고리의 다른 글
java + temporary table. 임시테이블 사용하기. MYSQL (0) | 2012.10.26 |
---|---|
MyBatis] There is no getter for property named.. error (0) | 2012.09.07 |
MyBatis] 반복되는 쿼리 묶기 Sql , include 태그 (0) | 2012.09.05 |
MyBatis] 쿼리에서 특정 문자 제거 (if 사용시) (3) | 2012.08.28 |
MySql] Insert Select 문 (1) | 2012.08.28 |