[Mybatis] 매개변수 매핑에 자바 8의 Optional 사용 예제

MyBatis에서 Java 8의 Optional을 매개변수 매핑에 사용하려면 조건에 따라 매핑할 값을 포함하거나 비어있는 Optional 객체를 전달할 수 있습니다. 아래는 Optional을 사용한 매개변수 매핑 예제입니다.

예제: Java 8의 Optional을 사용한 매개변수 매핑

  1. 매퍼 인터페이스 작성:
@Mapper
public interface UserMapper {

    @Select("SELECT * FROM users WHERE id = #{id}")
    Optional<User> getUserById(@Param("id") Optional<Integer> id);
}` 
  1. 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 매개변수 매핑에 사용하면 결과가 비어있는 경우에도 명확하게 처리할 수 있습니다.