ひがやすを技術ブログ

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

S2Dao1.0.8リリース

リリースメモ

  • 手動で動的にSQL文を組み立てられるようにするためにEntityManagerを追加しました。
  • DTOでも自動で動的なSELECT文を組み立てられるようにしました。

DTOによる自動で動的なSELECT文作成対応により、検索条件入力画面などは、ほとんど画面以外のコーディングは要らなくなると思います。



引数にDTO(Data Transter Object)を指定することもできます。その場合、ARGSアノテーションを指定してはいけません。S2Daoは、引数が1つで、ARGSアノテーションが指定されていない場合、引数をDTOとみなし、DTOのプロパティを使って自動的にSQL文を組み立てます。プロパティ名とカラム名が異なる場合は、COLUMNアノテーションを使ってカラム名を指定します。N:1でマッピングされているカラムを指定する場合には、カラム名_関連番号で指定します。テーブルに存在しないプロパティ(カラム)は自動的に無視されます。プロパティの値によって、WHERE句が変わるような動的SQL文を自動生成します。


package examples.dao;

public class EmployeeSearchCondition {

public static final String dname_COLUMN = "dname_0";
private String job;
private String dname;
...
}


List getEmployeesBySearchCondition(EmployeeSearchCondition dto);

EmployeeSearchCondition dto = new EmployeeSearchCondition();
dto.setDname("RESEARCH");
List employees = dao.getEmployeesBySearchCondition(dto);

SELECT EMP.empno, EMP.ename, EMP.job, EMP.mgr, EMP.hiredate,
EMP.sal, EMP.comm, EMP.deptno, department.dname AS dname_0,
department.deptno AS deptno_0,
department.loc AS loc_0, department.versionNo AS versionNo_0
FROM EMP LEFT OUTER JOIN DEPT department ON EMP.deptno = department.deptno
WHERE department.dname = 'RESEARCH'