[Mybatis] 매개변수 매핑에 자바 8의 Optional 사용 예제
MyBatis에서 Java 8의 Optional
을 매개변수 매핑에 사용하려면 조건에 따라 매핑할 값을 포함하거나 비어있는 Optional
객체를 전달할 수 있습니다. 아래는 Optional
을 사용한 매개변수 매핑 예제입니다.
예제: Java 8의 Optional을 사용한 매개변수 매핑
- 매퍼 인터페이스 작성:
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
Optional<User> getUserById(@Param("id") Optional<Integer> id);
}`
- 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);
// Optional을 사용하여 사용자 조회
Optional<Integer> userIdOptional = Optional.of(1);
Optional<User> userOptional = userMapper.getUserById(userIdOptional);
// 사용자가 존재하는 경우 출력
userOptional.ifPresent(user -> System.out.println("User: " + user));
// 비어있는 Optional을 사용하여 조회
Optional<Integer> emptyUserIdOptional = Optional.empty();
Optional<User> emptyUserOptional = userMapper.getUserById(emptyUserIdOptional);
// 사용자가 존재하지 않는 경우 아무 작업도 수행하지 않음
emptyUserOptional.ifPresent(user -> System.out.println("User: " + user));
}
}
}`
위의 예제에서는 Optional
을 사용하여 사용자 ID를 매개변수로 전달하고, 사용자를 조회한 결과를 Optional<User>
으로 받아옵니다. 사용자가 존재하는 경우 ifPresent
메서드를 사용하여 결과를 출력하고, 사용자가 존재하지 않는 경우에는 아무 작업도 수행하지 않습니다.
이렇게 Java 8의 Optional
을 MyBatis 매개변수 매핑에 사용하면 결과가 비어있는 경우에도 명확하게 처리할 수 있습니다.