|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 必須 | オプション | 詳細: 要素 |
@Target(value=METHOD) @Retention(value=RUNTIME) public @interface Select
検索処理を示します。
このアノテーションが注釈されるメソッドは、Dao
が注釈されたインタフェースのメンバでなければいけません。 iterate
要素に false
を指定することで、エンティティを1件ずつ処理することができます。
注釈されるメソッドは、次の制約を満たす必要があります。
iterate
要素が false
の場合:Domain
が注釈されたクラス、Entity
が注釈されたクラス、もしくは
SelectOptions
である。ただし、 SelectOptions
は最大でも1つしか使用できない。
List
でなくデータが存在しない場合、値は null
となる。
戻り値の型 | データが存在しない場合の値 |
---|---|
基本型 | null |
基本型を要素とする List |
空の List |
Domain が注釈されたクラス |
null |
Domain が注釈されたクラスを要素とする List |
空の List |
Entity が注釈されたクラス |
null |
Entity が注釈されたクラスを要素とする List |
空の List |
iterate
要素が true
の場合:IterationCallback
型のものが必須である。そのほか、基本型、Domain
が注釈されたクラス、 Entity
が注釈されたクラス、もしくは SelectOptions
を指定できる。ただし、
SelectOptions
は最大でも1つしか指定できない。
IterationCallback
の型パラメータと同じ型でなければいけない。
注釈されるメソッドに定義できるパラメータは型ごとに意味が異なります。
パラメータの型 | 役割 |
---|---|
基本型 | SQLにバインドする単一の値です。 |
Domain が注釈されたクラス |
SQLにバインドする単一の値です。 |
Entity が注釈されたクラス |
SQLにバインドする値の集合です。 |
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件以上返された場合
JdbcException
上記以外でJDBCに関する例外が発生した場合
任意要素の概要 | |
---|---|
int |
fetchSize
フェッチサイズです。 |
boolean |
iterate
結果のインスタンスを1件ずつ処理するかどうかを示します。 |
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
型のパラメータを含める必要があります。
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 必須 | オプション | 詳細: 要素 |