特定のデータベースからデータを抽出し、それを XML ファイルに入れることになっています。
ただし、データは、データベースの異なるテーブルに対して複数の選択クエリを実行することによってのみ取得できます。
これが私の構成です:
<!-- Reader for getting msisdn -->
<bean id="pagingdbItemReader2"
class="org.springframework.batch.item.database.JdbcPagingItemReader"
scope="step">
<property name="dataSource" ref="dataSource" />
<property name="queryProvider">
<bean
class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="selectClause" value="SELECT SUBSTR(DN_NUM,4) AS MSISDN" />
<property name="fromClause"
value="FROM contr_services_cap cs, directory_number d" />
<property name="whereClause"
value="WHERE co_id in (select co_id from contract_all where customer_id =:CUSTOMER_ID)
AND cs.dn_id = d.dn_id
AND cs.sncode = 1
AND CS.MAIN_DIRNUM = 'X'" />
<property name="sortKey" value="MSISDN" />
</bean>
</property>
<property name="parameterValues">
<map>
<entry key="CUSTOMER_ID" value="#{jobParameters['CUSTOMER_ID']}" />
</map>
</property>
<property name="pageSize" value="10" />
<property name="rowMapper">
<bean class="com.ooredoo.model.inputDB.MSISDNRowMapper" />
</property>
</bean>
<!-- Writer for getting msisdn -->
<bean id="dbItemWriter2" class="org.springframework.batch.item.xml.StaxEventItemWriter">
<property name="resource" value="file:xml/outputs/DonneesFactureFromDB.xml" />
<property name="marshaller" ref="dbMarshaller2" />
<property name="rootTagName" value="Facture" />
</bean>
<!-- Marshaller for getting msisdn -->
<bean id="dbMarshaller2" class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="aliases">
<util:map id="aliases">
<entry key="msisdn" value="com.ooredoo.model.inputDB.MSISDN" />
</util:map>
</property>
</bean>
すべてのクエリに対して、この設定をすべて行う (および対応する Java クラスを作成する) べきでしょうか?
編集:
クエリ「A」を使用してデータベースからデータを抽出するために、この構成を実行しました(そして、機能しました)。だから私の質問は、実行したいすべてのクエリに対して同じ構成(リーダー、ライター、マーシャラーなど)を書くことになっているのでしょうか...それとも、「クエリのグループ」のようなものを書くことができますか" これは次々に実行され、その結果が 1 つの XML ファイルに書き込まれるようにレンダリングできます ???