[java] MyBatis에서 자동 증가 컬럼 처리하기

MyBatis는 자바 언어 기반의 ORM(Object Relational Mapping) 프레임워크로, 데이터베이스와 자바 객체 간의 매핑을 쉽게 처리할 수 있도록 도와줍니다. 이번에는 MyBatis를 사용하면서 자동 증가 컬럼을 처리하는 방법에 대해 알아보겠습니다.

1. 자동 증가 컬럼 정의하기

먼저, 데이터베이스 테이블에서 자동 증가 컬럼을 정의해야 합니다. 예를 들어, users라는 테이블의 id 컬럼이 자동 증가 컬럼으로 사용되는 경우에는 다음과 같이 정의할 수 있습니다.

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50),
  email VARCHAR(50)
);

위의 예시에서 id 컬럼은 AUTO_INCREMENT 속성을 가지고 있으므로, 데이터가 삽입될 때 자동으로 증가됩니다.

2. MyBatis XML 설정 파일 수정하기

MyBatis XML 설정 파일에서 자동 증가 컬럼을 처리하기 위해 몇 가지 설정을 추가해야 합니다. 먼저, <insert> 태그에서 자동 증가 컬럼에 대한 처리를 할 수 있도록 다음과 같이 useGeneratedKeyskeyProperty 속성을 설정해줍니다.

<insert id="createUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
  INSERT INTO users (name, email) VALUES (#{name}, #{email})
</insert>

위의 설정에서 useGeneratedKeys 속성을 true로 설정하면, MyBatis에게 자동 생성된 키를 반환하도록 지정하게 됩니다. 또한, keyProperty 속성을 id로 설정하여 자동 생성된 키 값을 User 객체의 id 프로퍼티에 매핑하도록 합니다.

3. 자동 증가 컬럼 사용하기

이제 자동 증가 컬럼을 사용하여 데이터를 삽입할 수 있습니다. 이를 위해 MyBatis의 SqlSession을 사용하여 다음과 같이 createUser 메서드를 호출합니다.

public void createUser(User user) {
  try (SqlSession session = sqlSessionFactory.openSession()) {
    session.insert("createUser", user);
    session.commit();
  }
}

위의 예시에서 createUser 메서드는 User 객체를 입력받아 MyBatis의 insert 메서드를 사용하여 데이터를 삽입합니다. 이때, insert 메서드의 첫 번째 파라미터는 MyBatis XML 설정 파일에서 정의한 SQL 매핑 ID이며, 두 번째 파라미터는 실제 데이터를 나타내는 객체입니다.

자동 증가된 키 값을 얻기 위해 createUser 메서드를 호출한 후에는 User 객체의 id 프로퍼티를 통해 값을 확인할 수 있습니다.

마무리

이처럼 MyBatis를 사용하면 데이터베이스의 자동 증가 컬럼을 손쉽게 처리할 수 있습니다. 자동 증가 컬럼이 필요한 경우, 데이터베이스 테이블의 정의 및 MyBatis XML 설정 파일의 수정을 통해 처리할 수 있습니다.