org.seasar.extension.jdbc.query
クラス AbstractSelect<T,S extends Select<T,S>>

java.lang.Object
  上位を拡張 org.seasar.extension.jdbc.query.AbstractQuery<S>
      上位を拡張 org.seasar.extension.jdbc.query.AbstractSelect<T,S>
型パラメータ:
T - 戻り値のベースの型です。
S - Selectのサブタイプです。
すべての実装されたインタフェース:
Query<S>, Select<T,S>, SqlLogger
直系の既知のサブクラス:
AbstractSqlSelect, AutoSelectImpl

public abstract class AbstractSelect<T,S extends Select<T,S>>
extends AbstractQuery<S>
implements Select<T,S>

検索の抽象クラスです。

作成者:
higa

フィールドの概要
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()
          検索してベースオブジェクトを返します。
<RESULT> RESULT
iterate(IterationCallback<T,RESULT> callback)
          問い合わせ結果を一件ごとにコールバックに通知します。
protected
<RESULT> RESULT
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
 

フィールドの詳細

baseClass

protected java.lang.Class<T> baseClass
ベースクラスです。


maxRows

protected int maxRows
最大行数です。


fetchSize

protected int fetchSize
フェッチ数です。


offset

protected int offset
オフセットです。


limit

protected int limit
リミットです。


disallowNoResult

protected boolean disallowNoResult
検索結果がなかった場合にNoResultExceptionをスローするならtrueです。


resultLob

protected boolean resultLob
戻り値型がLOBならtrueです。


resultTemporalType

protected TemporalType resultTemporalType
戻り値の時制の種別です。


count

protected boolean count
SELECT COUNT(*)~で行数を取得する場合にtrue

コンストラクタの詳細

AbstractSelect

public AbstractSelect(JdbcManagerImplementor jdbcManager,
                      java.lang.Class<T> baseClass)
AbstractSelectを作成します。

パラメータ:
jdbcManager - 内部的なJDBCマネージャ
baseClass - ベースクラス
メソッドの詳細

maxRows

public S maxRows(int maxRows)
インタフェース Select の記述:
最大行数を設定します。

定義:
インタフェース Select<T,S extends Select<T,S>> 内の maxRows
パラメータ:
maxRows - 最大行数
戻り値:
このインスタンス自身
関連項目:
Statement.setMaxRows(int)

fetchSize

public S fetchSize(int fetchSize)
インタフェース Select の記述:
フェッチ数を設定します。

定義:
インタフェース Select<T,S extends Select<T,S>> 内の fetchSize
パラメータ:
fetchSize - フェッチ数
戻り値:
このインスタンス自身
関連項目:
Statement.setFetchSize(int)

limit

public S limit(int limit)
インタフェース Select の記述:
リミットを設定します。

定義:
インタフェース Select<T,S extends Select<T,S>> 内の limit
パラメータ:
limit - リミット
戻り値:
このインスタンス自身

offset

public S offset(int offset)
インタフェース Select の記述:
オフセットを設定します。

定義:
インタフェース Select<T,S extends Select<T,S>> 内の offset
パラメータ:
offset - オフセット
戻り値:
このインスタンス自身

disallowNoResult

public S disallowNoResult()
インタフェース Select の記述:
検索結果がなかった場合、NoResultExceptionをスローするよう設定します。

定義:
インタフェース Select<T,S extends Select<T,S>> 内の disallowNoResult
戻り値:
このインスタンス自身

lob

public S lob()
インタフェース Select の記述:
戻り値またはその要素がLOBであることを指定します。

このメソッドの呼び出しは、戻り値またはその要素がString型の場合に有効です。

定義:
インタフェース Select<T,S extends Select<T,S>> 内の lob
戻り値:
このインスタンス自身

temporal

public S temporal(TemporalType temporalType)
インタフェース Select の記述:
戻り値またはその要素のTemporalTypeを指定します。

このメソッドの呼び出しは、戻り値またはその要素がDateもしくはCalendar型の場合に有効です。

定義:
インタフェース Select<T,S extends Select<T,S>> 内の temporal
パラメータ:
temporalType - 時制の種別
戻り値:
このインスタンス自身

convertLimitSql

protected java.lang.String convertLimitSql(java.lang.String sql)
必要ならページング用にSQLを変換します。

パラメータ:
sql - SQL
戻り値:
変換後のSQL

getResultList

public java.util.List<T> getResultList()
インタフェース Select の記述:
検索してベースオブジェクトのリストを返します。

定義:
インタフェース Select<T,S extends Select<T,S>> 内の getResultList
戻り値:

ベースオブジェクトのリスト。

1件も対象がないときはnullではなく空のリストを返します。


getSingleResult

public T getSingleResult()
                  throws SNonUniqueResultException
インタフェース Select の記述:
検索してベースオブジェクトを返します。

定義:
インタフェース Select<T,S extends Select<T,S>> 内の getSingleResult
戻り値:

ベースオブジェクト。

1件も対象がないときはnullを返します。

例外:
SNonUniqueResultException - 検索結果がユニークでない場合。

iterate

public <RESULT> RESULT iterate(IterationCallback<T,RESULT> callback)
インタフェース Select の記述:
問い合わせ結果を一件ごとにコールバックに通知します。

問い合わせ結果に含まれる、 基点となるエンティティ(JdbcManager.from(Class)で指定したクラス)またはDTO(JdbcManager.selectBySql(Class, String, Object...)等で指定したクラス)ごとに、 IterationCallback.iterate(Object, IterationContext)メソッドに通知されます。 問い合わせ結果全体のリストを作成しないため、 問い合わせ結果が膨大になる場合でもメモリ消費量を抑えることが出来ます。

SQL自動生成による問い合わせの場合

問い合わせ結果は基点となるエンティティでソートされている必要があります. 基点となるエンティティが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 - コールバック
戻り値:
コールバックが最後に返した結果

getCount

public long getCount()
SQLが返す結果セットの行数を返します。

戻り値:
SQLが返す結果セットの行数

getResultListInternal

protected java.util.List<T> getResultListInternal()
検索してベースオブジェクトのリストを返します。

戻り値:
ベースオブジェクトのリスト

getSingleResultInternal

protected T getSingleResultInternal()
検索してベースオブジェクトを返します。

戻り値:
ベースオブジェクト

iterateInternal

protected <RESULT> RESULT iterateInternal(IterationCallback<T,RESULT> callback)
検索して反復した結果を返します。

型パラメータ:
RESULT - 反復コールバックの戻り値の型
パラメータ:
callback - 反復コールバック
戻り値:
反復コールバックの戻り値

processPreparedStatement

protected java.lang.Object processPreparedStatement(JdbcContext jdbcContext,
                                                    StatementHandler<java.lang.Object,java.sql.PreparedStatement> handler)
準備されたステートメントを処理します。

パラメータ:
jdbcContext - JDBCコンテキスト
handler - 準備されたステートメントを処理するハンドラ
戻り値:
準備されたステートメントを処理した結果

processCursorPreparedStatement

protected java.lang.Object processCursorPreparedStatement(JdbcContext jdbcContext,
                                                          StatementHandler<java.lang.Object,java.sql.PreparedStatement> handler)
カーソルつきの準備されたステートメントを処理します。

パラメータ:
jdbcContext - JDBCコンテキスト
handler - 準備されたステートメントを処理するハンドラ
戻り値:
準備されたステートメントを処理した結果

setupPreparedStatement

protected void setupPreparedStatement(java.sql.PreparedStatement ps)
準備されたステートメントをセットアップします。

パラメータ:
ps - 準備されたステートメント

createResultListResultSetHandler

protected abstract ResultSetHandler createResultListResultSetHandler()
リストを返す結果セットハンドラを作成します。

戻り値:
結果セットハンドラ

createSingleResultResultSetHandler

protected abstract ResultSetHandler createSingleResultResultSetHandler()
単独の値を返す結果セットハンドラを作成します。

戻り値:
結果セットハンドラ

createIterateResultSetHandler

protected abstract ResultSetHandler createIterateResultSetHandler(IterationCallback<T,?> callback)
反復する結果セットハンドラを作成します。

パラメータ:
callback - 反復コールバック
戻り値:
結果セットハンドラ

processResultSet

protected java.lang.Object processResultSet(JdbcContext jdbcContext,
                                            ResultSetHandler handler)
結果セットを処理します。

パラメータ:
jdbcContext - JDBCコンテキスト
handler - 結果セットを処理するハンドラ
戻り値:
結果セットを処理した結果

getBaseClass

public java.lang.Class<T> getBaseClass()
ベースクラスを返します。

戻り値:
ベースクラス

getFetchSize

public int getFetchSize()
フェッチ数を返します。

戻り値:
フェッチ数

getLimit

public int getLimit()
リミットを返します。

戻り値:
リミット

getMaxRows

public int getMaxRows()
最大行数を返します。

戻り値:
最大行数

getOffset

public int getOffset()
オフセットを返します。

戻り値:
オフセット


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