org.seasar.doma.jdbc.builder
クラス SelectBuilder

java.lang.Object
  上位を拡張 org.seasar.doma.jdbc.builder.SelectBuilder

public class SelectBuilder
extends Object

SELECT文を組み立て実行するクラスです。

このクラスはスレッドセーフではありません。

Java
 SelectBuilder builder = SelectBuilder.newInstance(config);
 builder.sql("select");
 builder.sql("id").sql(",");
 builder.sql("name").sql(",");
 builder.sql("salary");
 builder.sql("from Emp");
 builder.sql("where");
 builder.sql("name like ").param(String.class, "S%");
 builder.sql("and");
 builder.sql("age > ").param(int.class, 20);
 Emp emp = builder.getSingleResult(Emp.class);
 
実行されるSQL
 select
 id,
 name,
 salary
 from Emp
 where
 name like 'S%'
 and
 age > 20
 

導入されたバージョン:
1.8.0
作成者:
taedium

メソッドの概要
 void callerClassName(String className)
          呼び出し元のクラス名です。
 void callerMethodName(String methodName)
          呼び出し元のメソッド名です。
 void ensureResult(boolean ensureResult)
          結果が少なくとも1件以上存在することを保証します。
 void ensureResultMapping(boolean ensureResultMapping)
          結果のエンティティのすべてのプロパティが結果セットのカラムにマッピングされることを保証します。
 void fetchSize(int fetchSize)
          フェッチサイズを設定します。
<R> List<R>
getResultList(Class<R> resultClass)
          複数件を返します。
 List<Map<String,Object>> getResultList(MapKeyNamingType mapKeyNamingType)
          List<Map<String, Object>> として 複数件を返します。
<R> R
getSingleResult(Class<R> resultClass)
          1件を返します。
 Map<String,Object> getSingleResult(MapKeyNamingType mapKeyNamingType)
          Map<String, Object> として1件を返します。
 Sql<?> getSql()
          組み立てられたSQLを返します。
<R,T> R
iterate(Class<T> targetClass, IterationCallback<R,T> iterationCallback)
          処理対象のオブジェクト群を順に1件ずつ処理します。
<R> R
iterate(MapKeyNamingType mapKeyNamingType, IterationCallback<R,Map<String,Object>> iterationCallback)
          処理対象のオブジェクト群を Map<String, Object> として順に1件ずつ処理します。
 void maxRows(int maxRows)
          最大行数の制限値を設定します。
static SelectBuilder newInstance(Config config)
          ファクトリメソッドです。
 void options(SelectOptions options)
          検索系SQLを実行する際のオプションを設定します。
<P> SelectBuilder
param(Class<P> paramClass, P param)
          パラメータを追加します。
 void queryTimeout(int queryTimeout)
          クエリタイムアウト(秒)を設定します。
 SelectBuilder removeLast()
          最後に追加したSQLもしくはパラメータを削除します。
 SelectBuilder sql(String sql)
          SQLの断片を追加します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

newInstance

public static SelectBuilder newInstance(Config config)
ファクトリメソッドです。

パラメータ:
config - 設定
戻り値:
SELECT文を組み立てるビルダー
例外:
DomaNullPointerException - 引数がnull の場合

sql

public SelectBuilder sql(String sql)
SQLの断片を追加します。

パラメータ:
sql - SQLの断片
戻り値:
このインスタンス
例外:
DomaNullPointerException - 引数が null の場合

removeLast

public SelectBuilder removeLast()
最後に追加したSQLもしくはパラメータを削除します。

戻り値:
このインスタンス

param

public <P> SelectBuilder param(Class<P> paramClass,
                               P param)
パラメータを追加します。

パラメータの型には、基本型とドメインクラスを指定できます。

型パラメータ:
P - パラメータの型
パラメータ:
paramClass - パラメータのクラス
param - パラメータ
戻り値:
このインスタンス
例外:
DomaNullPointerException - paramClassnull の場合

getSingleResult

public <R> R getSingleResult(Class<R> resultClass)
1件を返します。

戻り値の型に指定できるのは、エンティティクラス、ドメインクラス、基本型のいずれかです。

検索結果が存在しない場合は nullを返しますが、 ensureResult(boolean)true を設定することで、 nullを返す代わりにNoResultException をスローできます。

型パラメータ:
R - 戻り値の型
パラメータ:
resultClass - 戻り値のクラス
戻り値:
検索結果
例外:
DomaNullPointerException - 引数がnull の場合
DomaIllegalArgumentException - 戻り値のクラスがエンティティクラス、ドメインクラス、基本型のいずれでもない場合
MappedPropertyNotFoundException - 戻り値の型がエンティティクラスで、結果セットに含まれるカラムにマッピングされたプロパティが見つからなかった場合
NonSingleColumnException - 戻り値の型が基本型やドメインクラスで、かつ結果セットに複数のカラムが含まれている場合
NoResultException - ensureResult(boolean)true を設定しており結果が存在しない場合
ResultMappingException - ensureResultMapping(boolean)true を設定しており戻り値の型がエンティティクラスやエンティティクラスを要素とする List の場合で、マッピングされないエンティティプロパティが存在する場合
NonUniqueResultException - 結果が2件以上返された場合
JdbcException - 上記以外でJDBCに関する例外が発生した場合

getSingleResult

public Map<String,Object> getSingleResult(MapKeyNamingType mapKeyNamingType)
Map<String, Object> として1件を返します。

検索結果が存在しない場合は nullを返しますが、 ensureResult(boolean)true を設定することで、 nullを返す代わりに NoResultException をスローできます。

パラメータ:
mapKeyNamingType - マップのキーのネーミング規約
戻り値:
検索結果
例外:
DomaNullPointerException - 引数がnull の場合
NoResultException - ensureResult(boolean)true を設定しており結果が存在しない場合
NonUniqueResultException - 結果が2件以上返された場合
JdbcException - 上記以外でJDBCに関する例外が発生した場合
導入されたバージョン:
1.17.0

getResultList

public <R> List<R> getResultList(Class<R> resultClass)
複数件を返します。

戻り値の型に指定できるのは、エンティティクラス、ドメインクラス、基本型のいずれかです。

検索結果が存在しない場合は空のリストを返します。

型パラメータ:
R - 戻り値のリストの要素の型
パラメータ:
resultClass - 戻り値のリストの要素のクラス
戻り値:
検索結果
例外:
DomaNullPointerException - 引数が null の場合
DomaIllegalArgumentException - 戻り値のリストの要素のクラスがエンティティクラス、ドメインクラス、基本型のいずれでもない場合
MappedPropertyNotFoundException - 戻り値のリストの要素の型がエンティティクラスで、 結果セットに含まれるカラムにマッピングされたプロパティが見つからなかった場合
NonSingleColumnException - 戻り値のリストの要素の型が基本型やドメインクラスで、かつ結果セットに複数のカラムが含まれている場合
JdbcException - 上記以外でJDBCに関する例外が発生した場合

getResultList

public List<Map<String,Object>> getResultList(MapKeyNamingType mapKeyNamingType)
List<Map<String, Object>> として 複数件を返します。

検索結果が存在しない場合は空のリストを返します。

パラメータ:
mapKeyNamingType - マップのキーのネーミング規約
戻り値:
検索結果
例外:
DomaNullPointerException - 引数が null の場合
JdbcException - 上記以外でJDBCに関する例外が発生した場合
導入されたバージョン:
1.17.0

iterate

public <R,T> R iterate(Class<T> targetClass,
                       IterationCallback<R,T> iterationCallback)
処理対象のオブジェクト群を順に1件ずつ処理します。

処理対象の型に指定できるのは、エンティティクラス、ドメインクラス、基本型のいずれかです。

型パラメータ:
R - 戻り値の型
T - 処理対象の型。すなわち、基本型、ドメインクラス、もしくはエンティティクラス
パラメータ:
targetClass - 処理対象のクラス
iterationCallback - コールバック
戻り値:
任意の実行結果
例外:
DomaNullPointerException - 引数のいずれかがnull の場合
DomaIllegalArgumentException - 処理対象のクラスがエンティティクラス、ドメインクラス、基本型のいずれでもない場合
MappedPropertyNotFoundException - 処理対象の型がエンティティクラスで、結果セットに含まれるカラムにマッピングされたプロパティが見つからなかった場合
NonSingleColumnException - 処理対象の型が基本型やドメインクラスで、かつ結果セットに複数のカラムが含まれている場合
JdbcException - 上記以外でJDBCに関する例外が発生した場合

iterate

public <R> R iterate(MapKeyNamingType mapKeyNamingType,
                     IterationCallback<R,Map<String,Object>> iterationCallback)
処理対象のオブジェクト群を Map<String, Object> として順に1件ずつ処理します。

型パラメータ:
R - 戻り値の型
パラメータ:
mapKeyNamingType - マップのキーのネーミング規約
iterationCallback - コールバック
戻り値:
任意の実行結果
例外:
DomaNullPointerException - 引数のいずれかがnull の場合
JdbcException - 上記以外でJDBCに関する例外が発生した場合
導入されたバージョン:
1.17.0

ensureResult

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

パラメータ:
ensureResult - 結果が少なくとも1件以上存在することを保証する場合 true

ensureResultMapping

public void ensureResultMapping(boolean ensureResultMapping)
結果のエンティティのすべてのプロパティが結果セットのカラムにマッピングされることを保証します。

パラメータ:
ensureResultMapping - 結果のエンティティのすべてのプロパティが結果セットのカラムにマッピングされることを保証する場合 true
導入されたバージョン:
1.34.0

fetchSize

public void fetchSize(int fetchSize)
フェッチサイズを設定します。

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

パラメータ:
fetchSize - フェッチサイズ
関連項目:
Statement.setFetchSize(int)

maxRows

public void maxRows(int maxRows)
最大行数の制限値を設定します。

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

パラメータ:
maxRows - 最大行数の制限値
関連項目:
Statement.setMaxRows(int)

queryTimeout

public void queryTimeout(int queryTimeout)
クエリタイムアウト(秒)を設定します。

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

パラメータ:
queryTimeout - クエリタイムアウト(秒)
関連項目:
Statement.setQueryTimeout(int)

callerClassName

public void callerClassName(String className)
呼び出し元のクラス名です。

指定しない場合このクラスの名前が使用されます。

パラメータ:
className - 呼び出し元のクラス名
例外:
DomaNullPointerException - 引数が null の場合

callerMethodName

public void callerMethodName(String methodName)
呼び出し元のメソッド名です。

指定しない場合このSQLを生成するメソッド(getSingleResult(Class), getResultList(Class),iterate(Class, IterationCallback), getSql())の名前が使用されます。

パラメータ:
methodName - 呼び出し元のメソッド名
例外:
DomaNullPointerException - 引数が null の場合

options

public void options(SelectOptions options)
検索系SQLを実行する際のオプションを設定します。

パラメータ:
options - 検索系SQLを実行する際のオプション
例外:
DomaNullPointerException - 引数が null の場合

getSql

public Sql<?> getSql()
組み立てられたSQLを返します。

戻り値:
組み立てられたSQL


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