mybatis の ResultHandler

csv4j を使って思い出したのが、mybatis にも似たような ResultHandler である。
使う機会がないと思っていたのだが、たまにあるかも。。。
膨大な件数を mybatis selectList の結果としてしまうとメモリ不足になる。
それならば、目的の処理はハンドラでやるべきである

import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
  :

SqlSession  session;
  :

session.select("sample.SaMapper.getAll" , new ResultHandler(){
   @Override
   public void handleResult(ResultContext con){


      // ResultContext # getResultCount() で実行中のカウント
      //   → クエリ結果の行番号
      
      // ResultContext # getResultObject() 
      //   → 1行のデータ,  SQLMap で記述した resultType にキャスト可能
      
      // ResultContext # stop() を実行したら次の行を実行しない
      
   }
}
);