ひがやすを技術ブログ

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

検索

単純な検索は、SQL文を書く必要はありません。

  • S2Dao#select(Class beanClass, String criteria, Object bindVariable)
  • S2Dao#select(Class beanClass, String criteria, Object[] bindVariables)


List result = dao.select(Emp.class, "empno = ?", new Integer(7788));

List result = dao.select(Emp.class, "job = ? AND deptno = ?",
new Object[]{"CLERK", new Integer(20)});
criteriaでWHERE句の条件を指定します。
リレーションもサポートします。
今のところはn:1のリレーションのみです。
HibernateでいうMany to Oneです。
例えば従業員テーブルから部署テーブルを取得するには、
次のようにEmpクラスにプロパティとメタデータを定義します。

private static final String DEPT_ONE = "deptno";
private Dept dept_;

public Dept getDept() {
return dept_;
}

public void setDept(Dept dept) {
dept_ = dept;
}

プロパティ名_ONEで指定したプロパティ(カラム)と
プロパティ(Dept)のテーブルのプライマリーキーが
Select時に外部結合されてデータが取得されます。
Hibernate方式。
ONE側のテーブルを検索の条件に含めるには次のようにします。

List result = dao.select(Emp.class, "dept.dname = ?", "SALES");
データベースによる方言は、DatabaseMetaData#getDatabaseProductName()
により適切な方言処理用クラスが自動的に選択されて処理されます。