개발 기록이
MyBatis 자동 증가 키 가져오기 (useGeneratedKeys, keyProperty) 본문
웹 개발/Back-end
MyBatis 자동 증가 키 가져오기 (useGeneratedKeys, keyProperty)
studyingbackhoe 2026. 4. 4. 14:32MyBatis를 사용할 때 INSERT 이후 생성된 PK 값을 바로 사용해야 하는 경우가 있다.
이때 사용할 수 있는 옵션인 useGeneratedKeys와 keyProperty에 대해 알아보자.
1. useGeneratedKeys
DB에서 자동 생성된 키를 가져올지 여부를 설정하는 옵션.
useGeneratedKeys="true"
2. keyProperty
생성된 키 값을 매핑할 객체의 필드명을 지정.
keyProperty="가져오고 싶은 PK 필드명"
3. 사용 예시
✔ DB 테이블 생성(MySQL 기준)
CREATE TABLE mybatis_users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
✔ Java 객체
public class User {
private Integer userId;
private String name;
private String email;
// getter, setter도 생성해주기
}
✔ Mapper XML
<insert id="insertUser" useGeneratedKeys="true" keyProperty="userId">
INSERT INTO users (name, email)
VALUES (#{name}, #{email})
</insert>
✔ Java 실행코드
User user = new User();
user.setName("홍길동");
user.setEmail("test@test.com");
userMapper.insertUser(user);
System.out.println(user.getUserId());
INSERT 이후에는 user.getUserId()를 통해 생성된 PK 값을 바로 확인할 수 있다.
기본적으로 useGeneratedKeys는 false이지만, true로 설정하면 DB가 자동으로 생성한 키 값을 함께 가져오고, MyBatis가 이를 user 객체의 id 필드에 자동으로 설정해 준다.
즉, 별도로 PK를 조회하는 로직 없이도, INSERT 이후 바로 userId 값을 사용할 수 있게 된다.
userMapper.insertUser(user);
⚠️ 이때 생성된 키는 반환값이 아니라, 전달한 객체(user)에 직접 설정된다.
'웹 개발 > Back-end' 카테고리의 다른 글
| [Java] POI 엑셀 다운로드 하기(셀 병합) (0) | 2026.02.17 |
|---|---|
| [Java] Base64 인코딩을 이용해서 암복호화하기 (0) | 2025.02.09 |
| [Java] public, private, static, final 정리 (0) | 2025.01.30 |
| [Java] ExecutorService 비동기 처리 (0) | 2025.01.19 |
| [Java] 서버 IP와 클라이언트 IP 값 가져오기 (0) | 2024.10.20 |