[Mybatis] useGeneratedKeys 예제

useGeneratedKeys는 데이터베이스에서 자동 생성된 키(일반적으로 AUTO_INCREMENT, SERIAL 등)를 사용하여 새로 추가된 행의 키 값을 자동으로 설정하는 기능입니다. MyBatis에서는 useGeneratedKeys 속성을 사용하여 이 기능을 활성화할 수 있습니다.

예제: useGeneratedKeys 사용

  1. 데이터베이스 테이블 생성
CREATE TABLE books (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255),
    author VARCHAR(255)
);` 
  1. Book 클래스 생성
public class Book {
    private int id;
    private String title;
    private String author;

    // Getter, Setter 생략
}` 
  1. 매퍼 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 필드에 설정하도록 지정하였습니다.

  1. 애플리케이션에서 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 필드에 설정됩니다. 이로써 자동 생성된 키를 사용하여 데이터베이스에 행을 추가할 수 있게 됩니다.