外だしSQLの一件検索
Entity型での取得や1件であることのチェックを行うメソッドが存在します。
実装方法
outsideSql()メソッドの後、「entityHandling()」メソッドを呼び出します。
すると、その後に「selectEntity()」・「selectEntityWithDeletedCheck()」メソッドが呼び出せます。
- selectEntity()
- selectEntityWithDeletedCheck()
→ 戻り値は引数で指定したEntityの型。
→ 検索結果が2件以上の場合はEntityDuplicatedExceptionが発生。
→ 検索結果が0件の場合はnullが戻る。
→ 検索結果が存在しない可能性があり、かつ、その場合にも処理を続ける場合に利用。
→ 戻り値は引数で指定したEntityの型。
→ 検索結果が2件以上の場合はEntityDuplicatedExceptionが発生。
→ 検索結果が0件の場合はEntityAlreadyDeletedExceptionが発生。
→ 検索結果が存在しないことが要件的にあり得ない(例外でよい)場合に利用。
ex) selectEntity()
Class<SimpleMember> entityType = SimpleMember.class
SimpleMember member = memberBhv.outsideSql().entityHandling().selectEntity(path, pmb, entityType);
if (member != null) {
...
} else {
...
}
ex) selectEntityWithDeletedCheck()
Class<SimpleMember> entityType = SimpleMember.class
SimpleMember member = memberBhv.outsideSql().entityHandling().selectEntity(path, pmb, entityType);
... // nullは戻らないのでnullチェックの必要なし
SQL上のSelect句の指定カラムを1つにして、戻り値Entityの型としてStringやIntegerを指定することも可能です。
検索件数の取得「select count(*)」や最大値の取得「select max(XXX)」などにおいてまさしくこれを利用します。
ex) 文字列
String value = memberBhv.outsideSql().entityHandling().selectEntity(path, pmb, String.class);
ex) 数値
Integer value = memberBhv.outsideSql().entityHandling().selectEntity(path, pmb, Integer.class);
