|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectorg.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>> 内の maxRowsmaxRows - 最大行数
Statement.setMaxRows(int)public S fetchSize(int fetchSize)
Select の記述:
Select<T,S extends Select<T,S>> 内の fetchSizefetchSize - フェッチ数
Statement.setFetchSize(int)public S limit(int limit)
Select の記述:
Select<T,S extends Select<T,S>> 内の limitlimit - リミット
public S offset(int offset)
Select の記述:
Select<T,S extends Select<T,S>> 内の offsetoffset - オフセット
public S disallowNoResult()
Select の記述: NoResultExceptionをスローするよう設定します。
Select<T,S extends Select<T,S>> 内の disallowNoResultpublic S lob()
Select の記述:
このメソッドの呼び出しは、戻り値またはその要素がString型の場合に有効です。
Select<T,S extends Select<T,S>> 内の lobpublic S temporal(TemporalType temporalType)
Select の記述: TemporalTypeを指定します。
このメソッドの呼び出しは、戻り値またはその要素がDateもしくはCalendar型の場合に有効です。
Select<T,S extends Select<T,S>> 内の temporaltemporalType - 時制の種別
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>> 内の iterateRESULT - 戻り値の型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()
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||