About

Documentation

プロジェクト文書

Built by Maven

問い合わせメソッド

DAO (Data Access Object) インタフェースには様々な問い合わせメソッドを持たせることができます.

全件取得

エンティティを全件取得するメソッドです.

メソッド名 (正規表現)
(get|find)All
引数
なし
戻り値
エンティティのList
public interface EmployeeDao {
    List<Employee> findAll();
}
実行されるJPQL
SELECT employee FROM Employee AS employee

主キーによる検索

主キーを指定してエンティティを取得するメソッドです.

メソッド名 (正規表現)
get|find
引数
エンティティの主キー
戻り値
エンティティ
public interface EmployeeDao {
    Employee find(int id);
}
実行されるJPQL
SELECT employee FROM Employee AS employee WHERE employee.id = :id

主キーによる検索 (リファレンスのみ)

主キーを指定してエンティティのリファレンスを取得するメソッドです.

メソッド名 (正規表現)
(get|find)Reference
引数
エンティティの主キー
戻り値
エンティティ
public interface EmployeeDao {
    Employee getReference(int id);
}

引数を条件とする検索

引数にマッチするエンティティを取得するメソッドです.

引数は問い合わせ条件に含めるエンティティのプロパティと引数の名前を一致させます. メソッドが呼び出された際に,nullでない引数が問い合わせ条件に含まれます. nullでない引数が複数ある場合はANDで連結されます.

引数名には演算子をサフィックスで指定することができます. 指定可能なサフィックスは「引数およびDTOのプロパティ」を 参照してください. サフィックスを省略すると = 演算子が使用されます.

メソッド名 (正規表現)
(get|find).+
引数
問い合わせ条件に含めるエンティティのプロパティの並び
戻り値
エンティティまたはエンティティのList
public interface EmployeeDao {
    List<Employee> findByParameter(String name);
}
実行されるJPQL
SELECT employee FROM Employee AS employee WHERE employee.name = :name

エンティティのプロパティを条件とする検索

引数で指定したエンティティのプロパティにマッチするエンティティを取得するメソッドです.

メソッドが呼び出された際に,引数で渡されたエンティティのnullでないプロパティが 問い合わせ条件に含まれます. nullでないプロパティが複数ある場合はANDで連結されます.

メソッド名 (正規表現)
(get|find).+
引数
問い合わせ条件に含めるエンティティ
戻り値
エンティティまたはエンティティのList
public interface EmployeeDao {
    List<Employee> findByExample(Employee emp);
}
実行されるJPQL
SELECT employee FROM Employee AS employee WHERE employee.name = :name AND employee.hereDate = :hereDate

DTOのプロパティを条件とする検索

引数で指定したDTOのプロパティにマッチするエンティティを取得するメソッドです.

メソッドが呼び出された際に,引数で渡されたDTOのnullでないプロパティが 問い合わせ条件に含まれます. nullでないプロパティが複数ある場合はANDで連結されます.

DTOのプロパティ名には演算子をサフィックスで指定することができます. 指定可能なサフィックスは「引数およびDTOのプロパティ」を 参照してください. サフィックスを省略すると = 演算子が使用されます.

メソッド名 (正規表現)
(get|find).+
引数
問い合わせ条件に含めるDTO
戻り値
エンティティまたはエンティティのList
public interface EmployeeDao {
    List<Employee> findByDto(EmployeeDto dto);
}
実行されるJPQL
SELECT employee FROM Employee AS employee WHERE employee.name LIKE :name

条件式による検索

引数で指定した条件式にマッチするエンティティを取得するメソッドです.

条件式はKuina-DaoのCriteria APIが提供するもので,ORや副問い合わせなどJPQLのWHERE句で 可能な任意の条件を指定することができます.

メソッド名 (正規表現)
(get|find).+
引数
条件式の並び
戻り値
エンティティまたはエンティティのList
public interface EmployeeDao {
    List<Employee> findCondition(ConditionalExpession cond);
}

JPQLによる検索

Named Queryを使用して問い合わせを行うメソッドです.

使用するNamed Queryの名前は問い合わせ対象のエンティティ名とメソッド名をピリオドで 連結したものになります. メソッドに@QueryNameを付けることにより,使用するNamed Queryの名前を 変更することができます.

JPQLは@NamedQueryアノテーションまたはマッピングファイルで定義します.

メソッド名 (正規表現)
(get|find).+
引数
JPQLに含まれるパラメータの並び
戻り値
エンティティまたはエンティティのList
public interface EmployeeDao {
    List<Employee> findByName();
}
実行されるNamed Queryの例
<named-query name="Employee.findByName">
  <query>
    SELECT
      employee
    FROM
      Employee employee
    WHERE
      employee.name = :name
  </query>
</named-query>

SQLによる検索

S2Dao相当の2WAY-SQLファイルを使用して問い合わせを行うメソッドです.

問い合わせの結果は任意のDTOにマップすることができます. 問い合わせの結果セットと名前の一致するDTOのプロパティに値が設定されます.

使用するSQLファイルの名前は,Daoのインタフェース名 (先頭小文字) とメソッド名をアンダースコアで連結し, 拡張子 .sql を付加したものになります. SQLファイルはDaoインタフェースのパッケージと同じ階層のディレクトリに配置します.

SQLによる検索は,JPA (EntityManager) を使用せず,JDBC APIを直接使用します.

メソッド名 (正規表現)
(get|find).+
引数
SQLに含まれるパラメータの並び
戻り値
DTOまたはDTOのList
public interface EmployeeDao {
    List<EmployeeDto> findByDepartmentName(String departmentName);
}
DTO
public class EmployeeDto {
    private int eid;
    private String ename;
    private String dname;

    //setters and getters
}
実行されるSQLファイルの名前の例
employeeDao_findByDepartmentName.sql
実行されるSQLファイルの例
SELECT
  e.id eid,
  e.name ename,
  d.name dname
FROM
  Employee e INNER JOIN Department d ON (e.department_id = d.id)
WHERE 
  d.name = /*departmentName*/'foo'

引数およびDTOのプロパティ

引数を条件とする検索およびDTOのプロパティを条件とする検索では,問い合わせ条件に使用する演算子を 引数名またはプロパティ名のサフィックスで指定することができます. サフィックスが指定されていない場合は = 演算子が適用されます.

サフィックス 演算子 説明
_EQ =
_NE <>
_LT <
_LE <=
_GT >
_GE >=
_IN IN 引数またはプロパティの型は配列にします.
_NOT_IN NOT IN 引数またはプロパティの型は配列にします.
_LIKE LIKE
_STARTS LIKE 引数またはプロパティの値 (文字列) の末尾に'%'が付加されます.
_ENDS LIKE 引数またはプロパティの値 (文字列) の先頭に'%'が付加されます.
_CONTAINS LIKE 引数またはプロパティの値 (文字列) の先頭と末尾に'%'が付加されます.
_IS_NULL IS NULL 引数またはプロパティの値はbooleanまたはBooleanとしてください. 値が真の場合,問い合わせ条件に含まれます.
_IS_NOT_NULL IS NOT NULL 引数またはプロパティの値はbooleanまたはBooleanとしてください. 値が真の場合,問い合わせ条件に含まれます.