|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjp.terasoluna.fw.batch.core.AbstractCollector<JobContext>
jp.terasoluna.fw.batch.ibatissupport.IBatisDb1NRelationCollectorImpl
public class IBatisDb1NRelationCollectorImpl
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 |
| フィールドの詳細 |
|---|
private java.lang.String sql
private QueryRowHandleDAO queryRowHandleDAO
SqlMapClientデータアクセスObject。
| コンストラクタの詳細 |
|---|
public IBatisDb1NRelationCollectorImpl()
| メソッドの詳細 |
|---|
protected CollectorResult doCollect(JobContext jobContext,
CollectedDataHandler collectedDataHandler,
JobStatus jobStatus)
AbstractCollector<JobContext> 内の doCollectjobContext - ジョブコンテキストcollectedDataHandler - ワーカキューjobStatus - 処理状況
public void setQueryRowHandleDAO(QueryRowHandleDAO queryRowHandleDAO)
SqlMapClientデータアクセスObjectを設定する。
queryDAO - SqlMapClientデータアクセスObjectpublic void setSql(java.lang.String sql)
sql - 対象データ取得用SQL文キー
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||