posted by 빛그루터기 2012. 3. 28. 13:24

mybatis에서 insert를 할 경우 저장 후 최종 시퀀스 값을 selectKey로 해서 넘겨주는데

이 넘겨준 값을 Spring에서 DAOImpl에서 어떻게 받느냐하면

 

mybatis에서  selectKey로 값을 넘겨 줍니다.

이때 keyProperty로 해당 값의 변수를 지정해 준다 (DTO에 해당 변수명 있어야됨)

 

<insert id="insertBoard" parameterType="newboard">
    INSERT INTO FAQ (
        B_NO, REF, STEP, B_LEVEL, NAME, SUBJ, NEWCONTENTS, HIT, REGIDATE,

        CONTENT, NOTICEYN
    ) VALUES (

        SEQ_FAQBNO.NEXTVAL, #{ref}, '0', '0', #{name}, #{subj}, #{newcontents}, '0', sysdate,

        #{newcontents}, 'N'
    )
    <selectKey resultType="int" keyProperty="b_no" order="AFTER">
        SELECT MAX(B_NO)  AS B_NO FROM FAQ

    </selectKey>
</insert>

 

 

DAOImpl 소스

다른 소스를 보면

int b_no = (int)getSqlSession().insert("newboard.insertBoard", newBoardDTO);

이렇게 되어 있는데 이렇게 하면 무조건 1로 반환되더군요;

 

아래 소스처럼 insert구분은 따로 selectKey값 받아오는것 따로입니다.

selectKey값이  해당 모델(DTO파일)의 keyProperty값과 같은 변수를 찾아 담아서 보내줍니다.

그럼 그 값을 해당 모델에서 꺼내오면 되는군요;

 

 @Override
 public int insertBoard(NewBoardDTO newBoardDTO) throws Exception {
     getSqlSession().insert("newboard.insertBoard", newBoardDTO);
     int b_no = newBoardDTO.getB_no();
     return b_no;
 } 

'프로그램 > mybatis(ibatis)' 카테고리의 다른 글

mybatis 조건 태그모음  (0) 2012.03.28
mybatis에서 procedure 호출하기  (0) 2012.03.28