[Oracle]SelectKey_사용하기 (feat. SEQUENCE)

2022. 5. 24. 17:15[DB]/[Oracle]_DB

728x90
반응형

구조 : Oracle DB

framework: Mybatis

목적 : SEQUENCE 로 증가되는 PK 를 가진 테이블의 INSERT 후 증가된 PK 가져오기

이유 : 글 작성 table 과 fileupload table 은 별도로 구성되어 있고,

파일 업로드시 게시글 table 의 pk 를 JOIN 하기 위함

 

조건:  JOIN 할 태이블은 SEQUENCE 설정이 되어 있어야 함


시퀀스는 다음글 참고 : https://yn971106.tistory.com/107

 

[Oracle]_SEQUENCE (feat. 테이블 pk)

구조 : Oracle DB framework: Mybatis 목적 : PK 이면서 값이 하나씩 또는 원하는 숫자만큼 증가해야하는 컬럼을 가진 테이블생성 ex) 테이블 고유 번호 기존 : 테이블을 추가 할 때마다 MAX 값에 +1 을 더하

yn971106.tistory.com

 

Mapper.xml

<insert id="boardWrite" parameterType="java.util.HashMap">

    insert into board
        (
         bno,
         title,
         content,
         writer,
         regdate
         )
    values (
            BNO.NEXTVAL,
            #{title},
            #{content},
            #{writer},
            SYSDATE
            )
    <selectKey resultType="int" keyProperty="bno" order="AFTER">
        SELECT BNO.CURRVAL FROM board
    </selectKey>
</insert>

<selectKey></selectKey> 를 이용하여 사용합니다.

resultType : 리턴값의 자료형

keyProperty : 리턴되는 변수명

order : -> before = select 문이 실행 되기 전에 값을 가져옴

         -> after = select 문이 실행 되고나서 값을 가져옴

 

삽입 후에 해당 num을 가져올 것이기 때문에 after를 사용하였습니다.

 

파일 업로드 insert 문

<insert id="insertfile">
    INSERT INTO board_file(
           bnum,
           filename,
           realname
    )values (
             #{bno},
             #{file_name},
             #{real_name}
                    )
</insert>

 

keyProperty 명을 mapper에 사용하면 됩니다.

 

감사합니다.

 

728x90
반응형