2012/08/25 13:40

mybatis selectKey 사용. ORM/myBatis

한 화면에서 두가지 insert가 동시에 일어나는데,
두 데이터가 Master/Slave 구조라면.. 
즉 FK가 걸려 있다는 말이겠죠.. 

그럼 첫번째 insert시에 key 값을 알아 내야 하는데,
그건 mybatis(ibatis)의 selectKey를 사용하면 된다. 

<selectKey resultType="int" keyProperty="bbNo" order="BEFORE">  
SELECT NVL( MAX(BB_NO), 0) + 1 FROM SUBLTN01 WHERE PJ_ID = #{pjId} AND BB_TP = #{bbTp}
</selectKey>

이를 이용하면 sql 실행 뒤 return시 생성된 key값이 
넣어 주었던 map에 포함되어 return된다. 

즉,
public HashMap insertSuBltn01(HashMap dto) throws Exception {

dao.insert("insertSubltn01", dto);
return dto;
}
위와 같이 insert가 실행되면 넘겨준 파라미터 map에 key값이 담겨진다.
model(DTO,Vo)를 사용했다면 해당 객체에 담겨지겠지.. 

잠깐 비교하자면..
ibatis는 return되는 int 값에 key 값이 넘어왔었는데,
mybatis가 되면서 위와 같이 변경되었다. 

훨씬 깔끔한 듯.. 



덧글

댓글 입력 영역