본문 바로가기

Mybatis

[mybatis] ResultHandler의 사용

mybatis 셋팅 후 수십만건의 row를 가져와야 할 경우.. 

혹은 단순히 Collection 타입으로 result를 받아야하는 상황이 아니라

Map<String, List<String>> 이런 형태일 경우 ResultHandler를 사용 할 수 있다.


내 경우는 수십만건을 한번 읽어서 가져와야 하는 케이스였는데..

단순히 SqlSession으로부터 selectLIst를 하면 전체 row를 메모리에 올리기 때문에

어느정도 수준을 넘어가면 OOM이 발생한다.


DB에 있는 수십만 row를 읽어서, 파일로 떨궈내거나 할 때.. 쓰면 되겠다.


1. mapper xml을 사용하는 경우



2. mapper interface를 사용하는 경우