[Mybatis] 자동 증가 키 지원(Sequence, Identity) 예제
MyBatis는 자동 증가 키(Sequence 또는 Identity)를 지원하기 위한 다양한 방법을 제공합니다. 아래는 시퀀스(Sequence)와 아이덴티티(Identity)를 사용한 예제입니다.
예제 1: 시퀀스(Sequence) 사용
- 매퍼 XML 파일 작성:
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
<insert id="insertUser" parameterType="User">
<!-- 시퀀스를 사용한 자동 증가 키 지원 -->
<selectKey keyProperty="id" resultType="Long" order="BEFORE">
SELECT your_sequence.nextval FROM dual
</selectKey>
INSERT INTO users (user_id, username, email) VALUES (#{id}, #{username}, #{email})
</insert>
</mapper>`
위의 예제에서는 Oracle DB를 예로 들고 있으며, 시퀀스를 사용하여 자동 증가 키를 생성하고 삽입합니다. <selectKey>
요소를 사용하여 시퀀스 값을 얻어옵니다.
- Java 코드에서 호출:
public class Main {
public static void main(String[] args) {
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession sqlSession = sessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setUsername("example");
user.setEmail("example@example.com");
// insertUser 메서드 호출 시 자동 증가 키가 생성됨
int rowsInserted = userMapper.insertUser(user);
System.out.println("Rows Inserted: " + rowsInserted);
System.out.println("Generated ID: " + user.getId());
}
}
}`
위의 Java 코드에서는 insertUser
메서드를 호출하여 사용자(User)를 데이터베이스에 삽입합니다. 이때 자동 증가 키가 생성되고, 이 키는 사용자 객체의 id
필드에 설정됩니다.
예제 2: 아이덴티티(Identity) 사용
- 매퍼 XML 파일 작성:
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
<insert id="insertUser" parameterType="User">
<!-- 아이덴티티 컬럼을 사용한 자동 증가 키 지원 -->
INSERT INTO users (username, email) VALUES (#{username}, #{email})
</insert>
</mapper>`
위의 예제에서는 MySQL과 같은 데이터베이스에서 아이덴티티 컬럼을 사용하여 자동 증가 키를 생성하고 데이터를 삽입합니다. 데이터베이스가 아이덴티티를 지원하는 경우, MyBatis는 자동으로 생성된 키 값을 사용자 객체에 설정합니다.
- Java 코드에서 호출:
public class Main {
public static void main(String[] args) {
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession sqlSession = sessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setUsername("example");
user.setEmail("example@example.com");
// insertUser 메서드 호출 시 자동 증가 키가 생성되며, 사용자 객체에 설정됨
int rowsInserted = userMapper.insertUser(user);
System.out.println("Rows Inserted: " + rowsInserted);
System.out.println("Generated ID: " + user.getId());
}
}
}`
위의 Java 코드에서도 insertUser
메서드를 호출하여 사용자(User)를 데이터베이스에 삽입합니다. 이때 아이덴티티 컬럼을 사용하여 자동 증가 키가 생성되고, 이 키는 사용자 객체의 id
필드에 설정됩니다.
자동 증가 키 지원은 다양한 데이터베이스에서 작동하며, MyBatis는 이러한 기능을 효과적으로 처리할 수 있습니다. 단지 데이터베이스가 어떤 방식을 사용하는지 확인하고 그에 맞게 설정하면 됩니다.