화면에서 두가지 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 되면서 위와 같이 변경되었다

출처:mybatis selectKey 사용.

 

 

 

  < insert id= "makeReferenceSeq" parameterClass= "RefSeq" >

     INSERT INTO CM_REFERENCE_SEQ

     (

           REF_ID, REF_KEY, BUSINESS_GRP, REF_NO, STATE, REG_ID, REG_DT

     )VALUES(

           #ref_id#, #ref_key#, #business_grp#, 1, 'NOR', #writer#, now()

     )

     ON DUPLICATE KEY

     UPDATE

           REF_NO = REF_NO + 1,

           MOD_ID = #writer#,

           MOD_DT = now()

     <selectKey resultClass ="Long" type="post">

            <!-- SELECT LAST_INSERT_ID(REF_NO) as REF_NO FROM CM_REFERENCE_SEQ -->

           SELECT LAST_INSERT_ID(REF_NO) AS REF_NO FROM CM_REFERENCE_SEQ

           WHERE REF_ID = #ref_id#

                AND REF_KEY = #ref_key#

    </selectKey >     

  </ insert>

 

'IT노트 > iBatis' 카테고리의 다른 글

ibatis JSON 연동  (0) 2015.02.24
IN 사용 방법 중 하나  (0) 2015.02.02
[iBatis] like문, escape문자, <![CDATA[ ]]>  (0) 2015.02.02
Ibatis list Map param[펌]  (0) 2015.02.02
Ibatis 동적 테이블명  (0) 2015.02.02
Posted by wychoi
,