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 |