반응형
2021.08.22 - [SQL] - [SQL, JSP] 방금 INSERT 한 데이터의 PK 값을 받아오기
[SQL, JSP] 방금 INSERT 한 데이터의 PK 값을 받아오기
프로젝트를 하는 도중 추가할 기능이 생김 ( 기존 영화 정보를 입력하는 Form에 영화 티저 동영상 주소를 입력하는 Form을 추가 ) 1. 기존 테이블에서 컬럼을 추가하지 않고 새로 테이블을 생성해
wheneveryouwantsz.tistory.com
(JSP 프로젝트 진행시 정말 쓰고싶던 기능인데 벌써 시간이 지나 MyBatis도 배우고 포스팅을 작성한다.. 감개무량..)
테이블 구성
CREATE SEQUENCE spe_num;
CREATE TABLE spe_tbl(
bno NUMBER(10, 0) PRIMARY KEY, /* 글번호 */
title VARCHAR2(200) NOT NULL, /* 글제목 */
content VARCHAR2(2000) NOT NULL, /* 글본문 */
writer VARCHAR2(50) NOT NULL, /* 글쓴이 */
regdate DATE default SYSDATE, /* 작성일 */
updatedate DATE default SYSDATE /* 수정일 */
);
글번호에 해당하는 bno 컬럼은 아래와 같이 생성한 시퀀스에 '시퀀스명.nextval' 로 데이터를 삽입해 어떠한 숫자가 입력되는지 알 수 없음
INSERT INTO spe_tbl (bno, title, content, writer)
VALUES (spe_num.nextval, 'testtitle', 'testcontent', 'testwriter');
이렇게 INSERT 구문을 실행해 데이터가 입력될 때, 어떠한 컬럼에 들어갈 값을 미리 확인할 수 있게 하는 것이 selectKey
mapper 관련해서는 게시물 참고 → 2021.09.14 - [Spring] - [Spring] Mapper 인터페이스와 Mapper.xml
mapper.xml
<insert id="insertSelectKey">
<selectKey keyProperty="bno" resultType="long" order="BEFORE">
SELECT spe_num.nextval FROM DUAL
</selectKey>
INSERT INTO spe_tbl (bno, title, content, writer) VALUES (#{bno}, #{title}, #{content}, #{writer})
</insert>
<insert> 태그의 id 속성에는 mapper 인터페이스에서 선언한 메서드명 작성
<selectKey> 태그의
- keyProperty 속성에는 컬럼명,
- resultType 속성에는 해당 컬럼의 타입,
- order 속성에는 INSERT 문 수행전에 SELECT 문을 실행하기 때문에 BEFORE 작성
mapper.java
public interface Mapper{
public void insertSelectKey(BoardVO vo);
}
MapperTest.java
테스트 코드 작성
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class MapperTest {
@Autowired
private Mapper mapper;
@Test
public void testInsertSelectKey(){
BoardVO vo = new BoardVO();
vo.setTitle("testSelectKey");
vo.setContent("testSelectKey");
vo.setWriter("testSelectKey");
mapper.insertSelectKey(vo);
}
}
테스트 실행 결과
selectKey로 조회된 값
insert 구문 실행되어 삽입된 값
'Spring' 카테고리의 다른 글
[Spring] Model 과 RedirectAttiributes 타입으로 데이터 전달 (0) | 2021.09.21 |
---|---|
[Spring] MyBatis 라이브러리 세팅 (0) | 2021.09.19 |
[Spring] Mapper 인터페이스와 Mapper.xml (0) | 2021.09.14 |
[Spring] 커넥션 풀(Connection Pool) 설정 (0) | 2021.09.12 |
[Spring] Oracle DB 연결 테스트 (0) | 2021.09.11 |