DomaのDaoでオーバーロードを使うポイント
DomaのDaoでは、SQLへのバインド変数が同じであればオーバーロードが使えます(S2Daoではオーバーロードは制限されています。)。主に、IterationCallbackとかSelectOptionsをシグネチャにもったメソッドでオーバーロードすることになります。こんな感じです。
@Select List<Employee> selectAll(); ... (1) @Select(iterate = true) Void selectAll(IterationCallback<Void, Employee> callback); ... (2) @Select List<Employee> selectAll(SelectOptions options); ... (3)
このときのポイントは、メソッド名が同じであるため、すべて同じSQLファイルにマッピングされるということです。
どういうときにうれしいかというと、同じSQLで、あるケースでは全件取得(1)、あるケースでは全件を1件ずつ取得(2)、あるケースではlimit/offsetつきで取得(3)と使いわけたい場合です。
IterationCallbackとSelectOptionsを両方同時に使うこともできます。使い道はlimit/offsetつきで取得したものを1件ずつ処理したい場合などですね。
@Select(iterate = true) Void selectAll(IterationCallback<Void, Employee> callback, SelectOptions options);