: 자동 증가를 설정한 PK값을 <selectKey>태그를 통해 수동으로 얻어와 그 결과를 이용할 수 있도록 한다.
예를 들어, 게시판에 게시글 등록 후 "00번 게시글이 등록되었습니다"라는 모달창을 띄울 때 사용할 수 있다.
게시글 번호를 자동 증가하도록 설정한 후 단순 <insert> 태그를 사용해서 글을 등록하고 해당 객체에서 게시글 번호를 얻어오면 모두 '0'으로 출력된다. (MySQL)
<selectKey>태그로 새 글 등록 전 글번호에서 1을 더한 값를 얻어온 후 그 결과를 방금 등록한 게시글 번호로 사용하면 된다.
※ <selectkey> order속성 BEFORE를 사용할 경우 첫 글을 게시할 시 이전글 번호(boardno)가 없어서 sql문에서 에러가 방생한다.
<selectkey> order속성 AFTER를 사용하니 해결됐다.
ex)
mapper Interface
public void insertSelectKey(BoardVO board);
mapper XML
<!-- 첫 글 게시 시 오류-->
<insert id="insertSelectKey">
<selectKey keyProperty="boardno" order="BEFORE"
resultType="int">
select MAX(boardno)+1 from boards
</selectKey>
insert into boards
(boardno, title, content, writer, deletestate,
boardtype, registerdate, updatedate)
values
(#{boardno}, #{title},
#{content}, #{writer}, default, default, default, default)
</insert>
<!-- 정상 작동-->
<insert id = "insertSelectKey">
insert into boards
(boardno, title, content, id, state,
boardtype, registerdate, updatedate)
values
(#{boardno}, #{title},
#{content}, #{id}, default, default, default, default)
<selectKey keyProperty="boardno" order="AFTER" resultType="int">
select MAX(boardno) from boards
</selectKey>
</insert>
'SPRING' 카테고리의 다른 글
SPRING 웹소켓에서 HttpSession 값 불러오기 (0) | 2023.02.19 |
---|---|
SPRING 웹소켓 기본설정 (Java Configuration) (0) | 2023.02.18 |
SPRING 의존성 주입 (0) | 2023.02.08 |
SPRING 테스트 코드 작성 (0) | 2023.02.07 |
SPRING 설정 (JAVA Configuration) (0) | 2023.02.06 |