[Mybatis] 반복자(Iterators) 예제

MyBatis에서는 결과셋을 반복하는 데 사용할 수 있는 반복자(Iterators)를 제공합니다. 반복자는 한 번에 모든 결과를 가져오는 대신에 필요한 만큼의 결과만 메모리에 로드하여 처리할 수 있게 해줍니다. 이를 통해 메모리 사용량을 최적화하고 대량의 데이터를 효율적으로 처리할 수 있습니다.

예제: 반복자 사용

  1. 매퍼 XML 파일 작성
<select id="selectAllBooks" resultType="Book">
  SELECT * FROM books
</select>` 
  1. 애플리케이션에서 반복자 사용
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.Iterator;

public class IteratorExample {

    public static void main(String[] args) {
        InputStream inputStream = IteratorExample.class.getResourceAsStream("/mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        try (SqlSession sqlSession = sessionFactory.openSession()) {
            Iterator<Book> bookIterator = sqlSession.selectList("selectAllBooks").iterator();

            while (bookIterator.hasNext()) {
                Book book = bookIterator.next();
                System.out.println("Book: " + book.getTitle());
            }
        }
    }
}` 

위의 예제에서 selectAllBooks 쿼리를 실행하여 모든 책의 목록을 가져오고, 이를 반복자로 순회하면서 출력합니다. 이렇게 하면 한 번에 모든 결과를 가져오는 것이 아니라 필요한 만큼의 결과를 메모리에 로드하여 처리할 수 있습니다. 이는 대량의 데이터를 다룰 때 메모리 효율성을 높여줍니다.