기존방식대로 글을 작성하면 controller에서 board_number 로그를 찍어보면 null 구글링하보니 mybatis에 방금 입력한
값의 특정값을 리턴해주고 싶을 때 selectKey를 사용하는것을 확인
db에는 board_number가 board_number int(11) NOT NULL AUTO_INCREMENT
이렇게 자동증가 하는데 자동증가하는 값을 가져오고 싶다면
<selectKey resultType="Integer" keyProperty="board_number" order="AFTER"> SELECT MAX(board_number) FROM board </selectKey>
-- resultType의 Integer는 boardVO에 Integer로 설정해주었기 때문에 동일하게 맞춰줘야한다.(int 나 long으로 해버리면 에러발생)
-- order를 AFTER로 해준 이유는 BEFORE를 해주면 입력하기전에 board_number를 가져와서 그 값을 이용해서 처리하는데
-- AFTER를 해주면 입력하고 board_number를 넣어준다.
-- 리턴값인 board_number는 parameterType에 넘겨준 객체 kr.co.web.domain.BoardVO로 넘어간다.
-- 즉, 이 메소드를 호출한 클래스에서 파라미터로 넘긴 board에서 바로 board.getBoard_number();로 값을 가져올 수 있다.
mysql의 auto_increment로 지정된 key가 1,2,3을 가진 상태에서 3을 삭제 한 후 insert 했을 때 4가 key값으로
insert 되는데 before 연산을 통해 값을 가져오면 java class 의 id값이 3으로 들어가기 때문에 before보다는 after를 사용한다.
'JAVA > spring' 카테고리의 다른 글
<a href ="#"> a 태그 파란색 및 밑줄 없애기 (0) | 2020.06.18 |
---|---|
<button> 버튼에 링크걸기 (0) | 2020.06.18 |
로그인 issue (0) | 2020.06.15 |
댓글 table에 foreign key 추가 (0) | 2020.06.15 |
javaScript a태그안에 onclick시 return false; (0) | 2020.06.14 |