반응형
Spring Boot MyBatis에서 selectKey 사용 방법
MyBatis를 이용해 데이터를 삽입할 때, 데이터베이스가 자동 생성한 기본 키(primary key) 값이 바로 필요한 경우가 있습니다.
이때 유용하게 사용할 수 있는 기능이 바로 selectKey 입니다.
속성
- keyProperty : 가져올 키값을 parameterType 객체의 어떤 필드에 할당할지 지정.
- resultType : 키값의 타입 keyProperty 에서 지정한 필드의 속성과 같아야 한다.
- order : INSERT 문 기준 키값을 조회하는 순서를 지정한다. AFTER 는 INSERT 문 실행 후 selectKey 가 실행되어 키값을 조회하며 키값이 시퀀스를 사용한 값이라면 BEFORE 속성값을 주어 INSERT 문 실행전에 미리 시퀀스 값을 가져올 수 있다.
사용방법
<insert id="insertUser" parameterType="com.example.User">
<!-- 필요한 키값(id)이 auto_increment 인 경우 (MySQL) -->
INSERT INTO user (
id
, name
, email
) VALUES (
#{id}
, #{name}
, #{email}
)
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
시퀀스 가져오기
<insert id="insertUser" parameterType="com.example.User">
<!-- insert 전에 시퀀스 값을 조회하여 User 객체의 id 필드에 할당 -->
<selectKey keyProperty="id" resultType="int" order="BEFORE">
SELECT user_seq.nextval FROM dual
</selectKey>
INSERT INTO user (id, name, email)
VALUES (#{id}, #{name}, #{email})
</insert>
'Dev > Devlog' 카테고리의 다른 글
Intellij 실행이 안되는 문제 해결 (0) | 2025.05.28 |
---|---|
[perplexity, chat gpt] perplexity 란? 프로모션 pro 3개월 구독권 증정 이벤트 (1) | 2025.02.17 |
[VMware Horizon Client, Mac] - Mac 에서 클라이언트 여러개 실행하기 (0) | 2025.02.11 |
[llama2/docker/ollama] llama2 로컬에서 docker 로 실행하기 (0) | 2024.03.13 |
[m1/mac/python/llama.cpp/llama2] 로컬에서 llama2 실행해보기 ( m1 맥북 ) (1) | 2024.03.13 |