[Mybatis] ResultHandler 결과 처리 예제
ResultHandler
는 MyBatis에서 쿼리 결과를 커스텀하게 처리하기 위한 인터페이스입니다. 이를 사용하여 조회된 데이터를 원하는 형식으로 가공하거나 추가 로직을 수행할 수 있습니다. 아래는 ResultHandler
를 사용한 결과 처리 예제입니다.
예제: ResultHandler를 사용한 결과 처리
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.util.ArrayList;
import java.util.List;
public class ResultHandlerExample {
public static void main(String[] args) {
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
.build(ResultHandlerExample.class.getResourceAsStream("/mybatis-config.xml"));
try (SqlSession sqlSession = sessionFactory.openSession()) {
List<Book> books = new ArrayList<>();
ResultHandler<Book> resultHandler = new ResultHandler<Book>() {
@Override
public void handleResult(ResultContext<? extends Book> resultContext) {
// 조회된 각 Book 객체를 커스텀한 방식으로 처리
Book book = resultContext.getResultObject();
// 예시로 각 Book의 제목을 대문자로 변경하여 리스트에 추가
book.setTitle(book.getTitle().toUpperCase());
books.add(book);
}
};
sqlSession.select("selectAllBooks", resultHandler);
// 커스텀 처리된 결과 확인
for (Book book : books) {
System.out.println("Book Title: " + book.getTitle());
}
}
}
}`
위의 예제에서는 ResultHandler
인터페이스를 구현하여 각 조회 결과를 커스텀하게 처리하고 있습니다. handleResult
메서드를 오버라이드하여 조회된 Book
객체의 제목을 대문자로 변경하여 리스트에 추가하는 방식으로 결과를 가공하였습니다.
selectAllBooks
는 예시로서 해당 매퍼 메서드는 필요한 매퍼 XML 설정이 있어야 합니다. ResultHandler
를 사용하면 조회된 데이터를 원하는 형식으로 가공하거나 특별한 처리를 수행할 수 있습니다.