jp.terasoluna.fw.batch.ibatissupport
クラス IBatisDb1NRelationCollectorImpl

java.lang.Object
  上位を拡張 jp.terasoluna.fw.batch.core.AbstractCollector<JobContext>
      上位を拡張 jp.terasoluna.fw.batch.ibatissupport.IBatisDb1NRelationCollectorImpl
すべての実装されたインタフェース:
Collector<JobContext>

public class IBatisDb1NRelationCollectorImpl
extends AbstractCollector<JobContext>

iBatisを用いた対象データ取得の実装クラス。

IBatisDbCollectorImplの1:Nマッピング対応版。
1:Nマッピング使用時、iBATISは1:N構造のオブジェクトが完成する前に RowHandler#handleRow(DataRowHandler#handleRow)に渡すため、 このコレクタでは、 RowHandler#handleRow(DataRowHandler#handleRow)に渡された結果を、次回同メソッドが実行されたときに キューに格納する。 最後に渡された結果は、iBATISが処理を終えた時点でキューに格納する。
また、1:Nマッピング使用時、iBATISは全てのデータを取得し終わるまで、 RowHandler#handleRow(DataRowHandler#handleRow)に渡したオブジェクトを、全てiBATIS内部に保持し続けるため、 このコレクタでは、RowHandler#handleRow(DataRowHandler#handleRow)に渡されたオブジェクトのシャローコピーをキューに格納し、 RowHandler#handleRow(DataRowHandler#handleRow)に渡されたオブジェクトの全プロパティを初期化する。

使用上の注意:

使いどころ

sqlMap記述例1(1:Nマッピング):

 <resultMap id="rmap_JB1231_SQL" class="sample.JB1231Data" groupBy="col1">
   <result property="col1"/>
   <result property="col2"/>
   <result property="col3"/>
   <result property="detail1" resultMap="rmap_JB1231_SQL_detail1"/>
 </resultMap>
 <resultMap id="rmap_JB1231_SQL_detail1" class="sample.Detail1">
   <result property="d12" column="d12"/>
   <result property="d13" column="d13"/>
 </resultMap>
 <select id="JB1231_SQL" resultMap="rmap_JB1231_SQL">
     SELECT
       t1.col1 as col1,
       t1.col2 as col2,
       t1.col3 as col3,
       d1.col2 as d12,
       d1.col3 as d13,
     FROM (sample_table1 t1
       left outer join sample_table1_detail1 d1 on t1.col1 = d1.col1)
     ORDER BY col1, ...
 </select>
 
sqlMap記述例2(1:M:Nマッピング):
 <resultMap id="rmap_JB1231_SQL" class="sample.JB1231Data" groupBy="col1">
   <result property="col1"/>
   <result property="col2"/>
   <result property="col3"/>
   <result property="detail1" resultMap="rmap_JB1231_SQL_detail1"/>
   <result property="detail2" resultMap="rmap_JB1231_SQL_detail2"/>
 </resultMap>
 <resultMap id="rmap_JB1231_SQL_detail1" class="sample.Detail1">
   <result property="d12" column="d12"/>
   <result property="d13" column="d13"/>
 </resultMap>
 <resultMap id="rmap_JB1231_SQL_detail2" class="sample.Detail2">
   <result property="d22" column="d22"/>
   <result property="d23" column="d23"/>
 </resultMap>
 <select id="JB1231_SQL" resultMap="rmap_JB1231_SQL">
   SELECT * FROM (
     SELECT
       t1.col1 as col1,
       t1.col2 as col2,
       t1.col3 as col3,
       d1.col2 as d12,
       d1.col3 as d13,
       null as d22,
       null as d23
     FROM (sample_table1 t1
       left outer join sample_table1_detail1 d1 on t1.col1 = d1.col1)
     UNION ALL
     SELECT
       t1.col1 as col1,
       t1.col2 as col2,
       t1.col3 as col3,
       null as d12,
       null as d13,
       d2.col2 as d22,
       d2.col3 as d23
     FROM (sample_table1 t1
       left outer join sample_table1_detail2 d2 on t1.col1 = d2.col1)
   ) AS A ORDER BY col1, ...
 </select>
 


入れ子のクラスの概要
private static class IBatisDb1NRelationCollectorImpl.QueuePutRowHandler
          Rowハンドラの実装クラス。
 
フィールドの概要
private  QueryRowHandleDAO queryRowHandleDAO
          SqlMapClientデータアクセスObject
private  java.lang.String sql
          対象データ取得用SQL文キー。
 
コンストラクタの概要
IBatisDb1NRelationCollectorImpl()
           
 
メソッドの概要
protected  CollectorResult doCollect(JobContext jobContext, CollectedDataHandler collectedDataHandler, JobStatus jobStatus)
          対象データ取得処理を実行するメソッド。
 void setQueryRowHandleDAO(QueryRowHandleDAO queryRowHandleDAO)
          SqlMapClientデータアクセスObjectを設定する。
 void setSql(java.lang.String sql)
          対象データ取得用SQL文キーを設定する。
 
クラス jp.terasoluna.fw.batch.core.AbstractCollector から継承されたメソッド
collect, setCollectedDataHandlerFactory
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

sql

private java.lang.String sql
対象データ取得用SQL文キー。


queryRowHandleDAO

private QueryRowHandleDAO queryRowHandleDAO
SqlMapClientデータアクセスObject

コンストラクタの詳細

IBatisDb1NRelationCollectorImpl

public IBatisDb1NRelationCollectorImpl()
メソッドの詳細

doCollect

protected CollectorResult doCollect(JobContext jobContext,
                                    CollectedDataHandler collectedDataHandler,
                                    JobStatus jobStatus)
対象データ取得処理を実行するメソッド。

定義:
クラス AbstractCollector<JobContext> 内の doCollect
パラメータ:
jobContext - ジョブコンテキスト
collectedDataHandler - ワーカキュー
jobStatus - 処理状況
戻り値:
コレクタ処理結果

setQueryRowHandleDAO

public void setQueryRowHandleDAO(QueryRowHandleDAO queryRowHandleDAO)
SqlMapClientデータアクセスObjectを設定する。

パラメータ:
queryDAO - SqlMapClientデータアクセスObject

setSql

public void setSql(java.lang.String sql)
対象データ取得用SQL文キーを設定する。

パラメータ:
sql - 対象データ取得用SQL文キー