|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object org.seasar.extension.jdbc.query.AbstractQuery<S> org.seasar.extension.jdbc.query.AbstractSelect<T,S>
T
- 戻り値のベースの型です。S
- Select
のサブタイプです。public abstract class AbstractSelect<T,S extends Select<T,S>>
検索の抽象クラスです。
フィールドの概要 | |
---|---|
protected java.lang.Class<T> |
baseClass
ベースクラスです。 |
protected boolean |
count
SELECT COUNT(*)~で行数を取得する場合に true |
protected boolean |
disallowNoResult
検索結果がなかった場合に NoResultException をスローするならtrue です。 |
protected int |
fetchSize
フェッチ数です。 |
protected int |
limit
リミットです。 |
protected int |
maxRows
最大行数です。 |
protected int |
offset
オフセットです。 |
protected boolean |
resultLob
戻り値型がLOBなら true です。 |
protected TemporalType |
resultTemporalType
戻り値の時制の種別です。 |
クラス org.seasar.extension.jdbc.query.AbstractQuery から継承されたフィールド |
---|
callerClass, callerMethodName, completed, executedSql, jdbcManager, logger, paramList, queryTimeout |
コンストラクタの概要 | |
---|---|
AbstractSelect(JdbcManagerImplementor jdbcManager,
java.lang.Class<T> baseClass)
AbstractSelect を作成します。 |
メソッドの概要 | ||
---|---|---|
protected java.lang.String |
convertLimitSql(java.lang.String sql)
必要ならページング用にSQLを変換します。 |
|
protected abstract ResultSetHandler |
createIterateResultSetHandler(IterationCallback<T,?> callback)
反復する結果セットハンドラを作成します。 |
|
protected abstract ResultSetHandler |
createResultListResultSetHandler()
リストを返す結果セットハンドラを作成します。 |
|
protected abstract ResultSetHandler |
createSingleResultResultSetHandler()
単独の値を返す結果セットハンドラを作成します。 |
|
S |
disallowNoResult()
検索結果がなかった場合、 NoResultException をスローするよう設定します。 |
|
S |
fetchSize(int fetchSize)
フェッチ数を設定します。 |
|
java.lang.Class<T> |
getBaseClass()
ベースクラスを返します。 |
|
long |
getCount()
SQLが返す結果セットの行数を返します。 |
|
int |
getFetchSize()
フェッチ数を返します。 |
|
int |
getLimit()
リミットを返します。 |
|
int |
getMaxRows()
最大行数を返します。 |
|
int |
getOffset()
オフセットを返します。 |
|
java.util.List<T> |
getResultList()
検索してベースオブジェクトのリストを返します。 |
|
protected java.util.List<T> |
getResultListInternal()
検索してベースオブジェクトのリストを返します。 |
|
T |
getSingleResult()
検索してベースオブジェクトを返します。 |
|
protected T |
getSingleResultInternal()
検索してベースオブジェクトを返します。 |
|
|
iterate(IterationCallback<T,RESULT> callback)
問い合わせ結果を一件ごとにコールバックに通知します。 |
|
protected
|
iterateInternal(IterationCallback<T,RESULT> callback)
検索して反復した結果を返します。 |
|
S |
limit(int limit)
リミットを設定します。 |
|
S |
lob()
戻り値またはその要素がLOBであることを指定します。 |
|
S |
maxRows(int maxRows)
最大行数を設定します。 |
|
S |
offset(int offset)
オフセットを設定します。 |
|
protected java.lang.Object |
processCursorPreparedStatement(JdbcContext jdbcContext,
StatementHandler<java.lang.Object,java.sql.PreparedStatement> handler)
カーソルつきの準備されたステートメントを処理します。 |
|
protected java.lang.Object |
processPreparedStatement(JdbcContext jdbcContext,
StatementHandler<java.lang.Object,java.sql.PreparedStatement> handler)
準備されたステートメントを処理します。 |
|
protected java.lang.Object |
processResultSet(JdbcContext jdbcContext,
ResultSetHandler handler)
結果セットを処理します。 |
|
protected void |
setupPreparedStatement(java.sql.PreparedStatement ps)
準備されたステートメントをセットアップします。 |
|
S |
temporal(TemporalType temporalType)
戻り値またはその要素の TemporalType を指定します。 |
クラス org.seasar.extension.jdbc.query.AbstractQuery から継承されたメソッド |
---|
addParam, addParam, addParam, addParam, assertNotCompleted, callerClass, callerMethodName, completed, getCallerClass, getCallerMethodName, getExecutedSql, getJdbcManager, getParam, getParamClasses, getParamSize, getParamValues, getParamValueTypes, getQueryTimeout, getValueType, handleResultSet, logSql, logSql, prepare, prepareCallerClassAndMethodName, prepareInParams, queryTimeout, resetParams, toStringArray |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
インタフェース org.seasar.extension.jdbc.Query から継承されたメソッド |
---|
callerClass, callerMethodName, queryTimeout |
フィールドの詳細 |
---|
protected java.lang.Class<T> baseClass
protected int maxRows
protected int fetchSize
protected int offset
protected int limit
protected boolean disallowNoResult
NoResultException
をスローするならtrue
です。
protected boolean resultLob
true
です。
protected TemporalType resultTemporalType
protected boolean count
true
コンストラクタの詳細 |
---|
public AbstractSelect(JdbcManagerImplementor jdbcManager, java.lang.Class<T> baseClass)
AbstractSelect
を作成します。
jdbcManager
- 内部的なJDBCマネージャbaseClass
- ベースクラスメソッドの詳細 |
---|
public S maxRows(int maxRows)
Select
の記述:
Select<T,S extends Select<T,S>>
内の maxRows
maxRows
- 最大行数
Statement.setMaxRows(int)
public S fetchSize(int fetchSize)
Select
の記述:
Select<T,S extends Select<T,S>>
内の fetchSize
fetchSize
- フェッチ数
Statement.setFetchSize(int)
public S limit(int limit)
Select
の記述:
Select<T,S extends Select<T,S>>
内の limit
limit
- リミット
public S offset(int offset)
Select
の記述:
Select<T,S extends Select<T,S>>
内の offset
offset
- オフセット
public S disallowNoResult()
Select
の記述: NoResultException
をスローするよう設定します。
Select<T,S extends Select<T,S>>
内の disallowNoResult
public S lob()
Select
の記述:
このメソッドの呼び出しは、戻り値またはその要素がString
型の場合に有効です。
Select<T,S extends Select<T,S>>
内の lob
public S temporal(TemporalType temporalType)
Select
の記述: TemporalType
を指定します。
このメソッドの呼び出しは、戻り値またはその要素がDate
もしくはCalendar
型の場合に有効です。
Select<T,S extends Select<T,S>>
内の temporal
temporalType
- 時制の種別
protected java.lang.String convertLimitSql(java.lang.String sql)
sql
- SQL
public java.util.List<T> getResultList()
Select
の記述:
Select<T,S extends Select<T,S>>
内の getResultList
ベースオブジェクトのリスト。
1件も対象がないときはnullではなく空のリストを返します。
public T getSingleResult() throws SNonUniqueResultException
Select
の記述:
Select<T,S extends Select<T,S>>
内の getSingleResult
ベースオブジェクト。
1件も対象がないときはnullを返します。
SNonUniqueResultException
- 検索結果がユニークでない場合。public <RESULT> RESULT iterate(IterationCallback<T,RESULT> callback)
Select
の記述:
問い合わせ結果に含まれる、 基点となるエンティティ(JdbcManager.from(Class)
で指定したクラス)またはDTO(JdbcManager.selectBySql(Class, String, Object...)
等で指定したクラス)ごとに、
IterationCallback.iterate(Object, IterationContext)
メソッドに通知されます。
問い合わせ結果全体のリストを作成しないため、 問い合わせ結果が膨大になる場合でもメモリ消費量を抑えることが出来ます。
問い合わせ結果は基点となるエンティティでソートされている必要があります. 基点となるエンティティがAで、1対多の関連を持つエンティティBを結合した問い合わせの場合、 結果セットは以下のような並びでなくてはなりません。
A | B |
---|---|
A1 | B1 |
A1 | B2 |
A2 | B1 |
A2 | B2 |
上記の問い合わせ結果の場合、
IterationCallback.iterate(Object, IterationContext)
メソッドは2回呼び出されます。
ただし,A1に関連づけられたB1およびB2と、A1に関連づけられたB1およびB2は同一のインスタンスではなく、 別のインスタンスになります。
A | B |
---|---|
A1 | B1 |
A2 | B1 |
A1 | B2 |
A2 | B2 |
上記の問い合わせ結果の場合、
IterationCallback.iterate(Object, IterationContext)
メソッドは4回呼び出されてしまいます。
Select<T,S extends Select<T,S>>
内の iterate
RESULT
- 戻り値の型callback
- コールバック
public long getCount()
protected java.util.List<T> getResultListInternal()
protected T getSingleResultInternal()
protected <RESULT> RESULT iterateInternal(IterationCallback<T,RESULT> callback)
RESULT
- 反復コールバックの戻り値の型callback
- 反復コールバック
protected java.lang.Object processPreparedStatement(JdbcContext jdbcContext, StatementHandler<java.lang.Object,java.sql.PreparedStatement> handler)
jdbcContext
- JDBCコンテキストhandler
- 準備されたステートメントを処理するハンドラ
protected java.lang.Object processCursorPreparedStatement(JdbcContext jdbcContext, StatementHandler<java.lang.Object,java.sql.PreparedStatement> handler)
jdbcContext
- JDBCコンテキストhandler
- 準備されたステートメントを処理するハンドラ
protected void setupPreparedStatement(java.sql.PreparedStatement ps)
ps
- 準備されたステートメントprotected abstract ResultSetHandler createResultListResultSetHandler()
protected abstract ResultSetHandler createSingleResultResultSetHandler()
protected abstract ResultSetHandler createIterateResultSetHandler(IterationCallback<T,?> callback)
callback
- 反復コールバック
protected java.lang.Object processResultSet(JdbcContext jdbcContext, ResultSetHandler handler)
jdbcContext
- JDBCコンテキストhandler
- 結果セットを処理するハンドラ
public java.lang.Class<T> getBaseClass()
public int getFetchSize()
public int getLimit()
public int getMaxRows()
public int getOffset()
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |