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