org.seasar.doma
注釈型 Select


@Target(value=METHOD)
@Retention(value=RUNTIME)
public @interface Select

検索処理を示します。

このアノテーションが注釈されるメソッドは、Daoインタフェースのメンバでなければいけません。 iterate 要素に true を指定することで、エンティティを1件ずつ処理することができます。

注釈されるメソッドは、次の制約を満たす必要があります。

iterate 要素が false の場合:

iterate 要素が true の場合:

 

SelectOptionsIterationCallback は特別な意味を持つパラメータです。

例:
 @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);
 }
 
注釈されるメソッドは、次の例外をスローすることがあります。

作成者:
taedium
関連項目:
SelectOptions, IterationCallback

任意要素の概要
 boolean ensureResult
          結果が少なくとも1件以上存在することを保証します。
 boolean ensureResultMapping
          結果がエンティティやエンティティのリストの場合、エンティティのすべてのプロパティに結果セットのカラムがマッピングされることを保証します。
 int fetchSize
          フェッチサイズです。
 boolean iterate
          結果のインスタンスを1件ずつ処理するかどうかを示します。
 MapKeyNamingType mapKeyNaming
          検索結果を @code{Map} もしくは @code{List>} として取得する場合のマップのキーに対するネーミング規約です。
 int maxRows
          最大行数の制限値です。
 int queryTimeout
          クエリタイムアウト(秒)です。
 

queryTimeout

public abstract int queryTimeout
クエリタイムアウト(秒)です。

指定しない場合、 Config.getQueryTimeout() が使用されます。

関連項目:
Statement.setQueryTimeout(int)
デフォルト:
-1

fetchSize

public abstract int fetchSize
フェッチサイズです。

指定しない場合、 Config.getFetchSize() が使用されます。

関連項目:
Statement.setFetchSize(int)
デフォルト:
-1

maxRows

public abstract int maxRows
最大行数の制限値です。

指定しない場合、 Config.getMaxRows() が使用されます。

関連項目:
Statement.setMaxRows(int)
デフォルト:
-1

iterate

public abstract boolean iterate
結果のインスタンスを1件ずつ処理するかどうかを示します。

true の場合、注釈されたメソッドのパラメータに IterationCallback 型のパラメータを含める必要があります。

デフォルト:
false

ensureResult

public abstract boolean ensureResult
結果が少なくとも1件以上存在することを保証します。

true の場合に結果が存在しなければ、このアノテーションが注釈されたメソッドから NoResultException がスローされます。

デフォルト:
false

ensureResultMapping

public abstract boolean ensureResultMapping
結果がエンティティやエンティティのリストの場合、エンティティのすべてのプロパティに結果セットのカラムがマッピングされることを保証します。

true の場合、マッピングされないプロパティが存在すれば、このアノテーションが注釈されたメソッドから ResultMappingException がスローされます。

導入されたバージョン:
1.34.0
デフォルト:
false

mapKeyNaming

public abstract MapKeyNamingType mapKeyNaming
検索結果を @code{Map} もしくは @code{List>} として取得する場合のマップのキーに対するネーミング規約です。

導入されたバージョン:
1.7.0
デフォルト:
org.seasar.doma.MapKeyNamingType.NONE


Copyright © 2009-2014 The Seasar Foundation. All Rights Reserved.