SQLの扱い
今度は、手動のSQLを使う場合です。
Uujiは、S2Daoと同様にクラス名_メソッド名.sqlのファイルがDaoのインターフェースと同じパッケージに置かれていたら自動的にそのSQLを適用します。強力なのは、関連もきちんとサポートできることです。例えば、次のSQLファイルとDaoがあるとします。
select * from emp left outer join dept where job = /*job*/'hoge' or dep_id = /*deptId*/1
Uujiは、SELECTリストが*なので、empのデータとその関連のdeptをつめたempのリストがかえります。WHERE句の条件には使うけど、結果にはdeptがいらない場合
ListfindAllByJobOrDeptId(String job, Long deptId);
select emp.* from emp left outer join dept where job = /*job*/'hoge' or dep_name = /*deptName*/'foo'
のように書くことができます。結果をDTOにマッピングしたい場合は、SELECTリストでASでDTOのプロパティ名を指定します。
ListfindAllByJobOrDeptName(String job, String deptName);
class EmpDto {
private Long deptId;
private BigDecimal maxSal;
private BigDecimal minSal;
...
}
ListfindAllMaxSalAndMinSal();
select dept_id as deptId, max(sal) as maxSal, min(sal) as minSal
from emp group by dept_id