728x90
반응형
SMALL
안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)
insert/update 등을 실행하고서 결과를 확인해야 하는 상황이 생깁니다.
다음은 insert 되는 Auto Increment 값(mysql 등)이나 sequence 값(oracle 등)을 조회하는 방법입니다.
* useGeneratedKeys, keyProperty 옵션
사용하는 데이터베이스가 Mysql과 같이 자동생성 키를 지원한다면 useGeneratedKeys, keyProperty 옵션을 통해 insert 된 데이터의 key 값을 리턴 받을 수 있습니다.
- useGeneratedKeys : (insert, update에만 적용) 자동생성 키를 받을때 true로 설정한다. (default: false)
- keyProperty : 리턴 될 key property 설정. 여러개를 사용한다면 ,(콤마)를 구분자로 나열한다.
만약 ON DUPLICATE KEY UPDATE를 사용한다면 update된 데이터의 key 값을 조회할 수 있습니다.
<insert id="openChatRoom" parameterType="chatRoom" useGeneratedKeys="true">
<!--; order="AFTER"로 설정했기때문에, INSERT 구문이 먼저 실행된 후 아래의 SELET 구문을 통해 chatRoomNo를 가져옴 -->
INSERT INTO CHAT_ROOM VALUES
(SEQ_CR_NO.NEXTVAL , #{title} , DEFAULT , #{userNo} )
<selectKey keyProperty="chatRoomNo" resultType="int" order="AFTER">
SELECT SEQ_CR_NO.CURRVAL FROM DUAL
</selectKey>
</insert>
package com.kh.spring.chat.model.vo;
import lombok.Data;
@Data
public class ChatRoom {
private int chatRoomNo;
private String title;
private String status;
private int userNo;
private String userName; //;db상없는 데이터
private int cnt; //;db상없는 데이터 (chatroomjoin과 join 해서 총 사용자 수 알아낼것임)
}
* SelectKey 옵션
Oracle과 같이 Sequence를 사용하는 경우는 selectKey 옵션을 사용하면됩니다.
- selectKey
- keyProperty : 리턴 받을 변수명
- resultType : 러턴 값의 자료형
- order : 순서 [AFTER|BEFORE]
- AFTER : insert 구문 실행 후 selectKey 구문 실행
- BEFORE : selectKey 구문 실행 후 리턴 값을 keyProperty에 셋팅한 뒤 insert 구문 실행
728x90
반응형
LIST
'⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆ > MyBatis' 카테고리의 다른 글
[MyBatis] mybatis-config.xml - 마이바티스 전체 설정정보 작성하기 (0) | 2023.07.31 |
---|---|
[MyBatis] JDBC와 MyBatis 차이점, MyBatis 정의 및 사용 (0) | 2023.07.31 |