|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 必須 | オプション | 詳細: 要素 |
@Target(value=METHOD) @Retention(value=RUNTIME) public @interface Select
検索処理を示します。
このアノテーションが注釈されるメソッドは、Daoインタフェースのメンバでなければいけません。 iterate
要素に
true
を指定することで、エンティティを1件ずつ処理することができます。
注釈されるメソッドは、次の制約を満たす必要があります。
iterate
要素が false
の場合:SelectOptions
は最大でも1つしか使用できない。
List
でなくデータが存在しない場合、値は null
となる。ただし、ensureResult()
に true
が指定された場合、データが存在しなければ
NoResultException
がスローされる。
戻り値の型 | データが存在しない場合の値 |
---|---|
基本型 | null |
基本型を実型引数とする List |
空の List |
ドメインクラス | null |
ドメインクラスを実型引数とする List |
空の List |
エンティティクラス | null |
エンティティクラスを実型引数とする List |
空の List |
Map<String, Object> |
null |
Map<String, Object> を実型引数とする List |
空の List |
iterate
要素が true
の場合:IterationCallback
型のものが含まれる。その他のパラメータは任意の型である。ただし、
SelectOptions
は最大でも1つしか指定できない。
IterationCallback
の1番目の型パラメータと同じ型でなければいけない。
ensureResult()
に true
が指定された場合、データが存在しなければ
NoResultException
がスローされる。
SelectOptions
と IterationCallback
は特別な意味を持つパラメータです。
SelectOptions |
SELECT文の実行に関するオプション(ページングや悲観的排他制御など)です。 |
IterationCallback |
検索結果にマッピングされたインスタンスを1件ずつ処理するコールバックです。 |
@Entity public class Employee { ... } @Dao(config = AppConfig.class) public interface EmployeeDao { @Select String selectNameById(Integer id); @Select List<Employee> selectNamesByAgeAndSalary(Integer age, BigDecimal salary); @Select Employee selectById(Integer id); @Select List<Employee> selectByExample(Employee example); @Select(iterate = true) <R> R selectSalary(Integer departmentId, IterationCallback<R, BigDecimal> callback); }注釈されるメソッドは、次の例外をスローすることがあります。
DomaNullPointerException
パラメータに null
を渡した場合
SqlFileNotFoundException
SQLファイルが見つからなかった場合
MappedPropertyNotFoundException
結果セットに含まれるカラムにマッピングされたプロパティが見つからなかった場合
NonUniqueResultException
戻り値の型が List
でない場合で、かつ結果が2件以上返された場合
NonSingleColumnException
戻り値の型が、基本型やドメインクラスもしくは基本型やドメインクラスの
List
場合で、かつ結果セットに複数のカラムが含まれている場合
NoResultException
ensureResult()
に true
が指定され、結果が0件の場合
JdbcException
上記以外でJDBCに関する例外が発生した場合
SelectOptions
,
IterationCallback
任意要素の概要 | |
---|---|
boolean |
ensureResult
結果が少なくとも1件以上存在することを保証します。 |
boolean |
ensureResultMapping
結果がエンティティやエンティティのリストの場合、エンティティのすべてのプロパティに結果セットのカラムがマッピングされることを保証します。 |
int |
fetchSize
フェッチサイズです。 |
boolean |
iterate
結果のインスタンスを1件ずつ処理するかどうかを示します。 |
MapKeyNamingType |
mapKeyNaming
検索結果を @code{Map |
int |
maxRows
最大行数の制限値です。 |
int |
queryTimeout
クエリタイムアウト(秒)です。 |
public abstract int queryTimeout
指定しない場合、 Config.getQueryTimeout()
が使用されます。
Statement.setQueryTimeout(int)
public abstract int fetchSize
指定しない場合、 Config.getFetchSize()
が使用されます。
Statement.setFetchSize(int)
public abstract int maxRows
指定しない場合、 Config.getMaxRows()
が使用されます。
Statement.setMaxRows(int)
public abstract boolean iterate
true
の場合、注釈されたメソッドのパラメータに IterationCallback
型のパラメータを含める必要があります。
public abstract boolean ensureResult
true
の場合に結果が存在しなければ、このアノテーションが注釈されたメソッドから
NoResultException
がスローされます。
public abstract boolean ensureResultMapping
true
の場合、マッピングされないプロパティが存在すれば、このアノテーションが注釈されたメソッドから
ResultMappingException
がスローされます。
public abstract MapKeyNamingType mapKeyNaming
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 必須 | オプション | 詳細: 要素 |