ひがやすを技術ブログ

電通国際情報サービスのプログラマ

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

List findAllByJobOrDeptId(String job, Long deptId);
Uujiは、SELECTリストが*なので、empのデータとその関連のdeptをつめたempのリストがかえります。WHERE句の条件には使うけど、結果にはdeptがいらない場合

select emp.* from emp left outer join dept where job = /*job*/'hoge' or dep_name = /*deptName*/'foo'

List findAllByJobOrDeptName(String job, String deptName);
のように書くことができます。結果をDTOマッピングしたい場合は、SELECTリストでASでDTOのプロパティ名を指定します。

class EmpDto {
private Long deptId;
private BigDecimal maxSal;
private BigDecimal minSal;
...
}

List findAllMaxSalAndMinSal();

select dept_id as deptId, max(sal) as maxSal, min(sal) as minSal
from emp group by dept_id