[Mybatis] useGeneratedKeys 예제
useGeneratedKeys
는 데이터베이스에서 자동 생성된 키(일반적으로 AUTO_INCREMENT, SERIAL 등)를 사용하여 새로 추가된 행의 키 값을 자동으로 설정하는 기능입니다. MyBatis에서는 useGeneratedKeys
속성을 사용하여 이 기능을 활성화할 수 있습니다.
예제: useGeneratedKeys 사용
- 데이터베이스 테이블 생성
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
author VARCHAR(255)
);`
Book
클래스 생성
public class Book {
private int id;
private String title;
private String author;
// Getter, Setter 생략
}`
- 매퍼 XML 파일 작성
<insert id="insertBook" parameterType="Book" useGeneratedKeys="true" keyProperty="id">
INSERT INTO books (title, author)
VALUES (#{title}, #{author})
</insert>`
위의 예제에서 useGeneratedKeys="true"
속성을 사용하여 자동 생성된 키를 사용하겠다고 선언하고, keyProperty="id"
속성으로 자동 생성된 키 값을 Book
객체의 id
필드에 설정하도록 지정하였습니다.
- 애플리케이션에서
insertBook
메서드 호출
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class UseGeneratedKeysExample {
public static void main(String[] args) {
InputStream inputStream = UseGeneratedKeysExample.class.getResourceAsStream("/mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession sqlSession = sessionFactory.openSession()) {
Book newBook = new Book();
newBook.setTitle("MyBatis Guide");
newBook.setAuthor("OpenAI");
sqlSession.insert("insertBook", newBook);
System.out.println("Inserted book id: " + newBook.getId());
}
}
}`
위의 예제에서 insertBook
메서드를 호출하면 자동으로 생성된 키가 newBook
객체의 id
필드에 설정됩니다. 이로써 자동 생성된 키를 사용하여 데이터베이스에 행을 추가할 수 있게 됩니다.