ItemWriterについて説明します。
例1は渡されたデータをcsvファイルに直接出力する場合の例です。例2は内容を指定してcsvファイルに出力する場合の例です。指定した形式とは異なるデータが含まれていた場合、エラーを返します。例3は1000行ごとに新しいcsvファイルに結果を出力する場合の例です。複数のcsvファイルに出力するためには、MultiResourceItemWriter を使用します。MultiResourceItemWriterを使用して複数のcsvファイルに出力をする場合は、SuffixCreatorクラスを作成する必要があります。
例
例1 渡されたデータをcsvファイルに直接出力する場合
Job定義ファイル(job.xml):
<!-- ItemWriter定義 -->
<bean id="fileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
<!-- csvファイルの出力先ファイルパスを指定 -->
<property name="resource" value="file:/csv/input.csv" />
<!-- lineAggregatorを行わないための設定 -->
<property name="lineAggregator">
<bean class="org.springframework.batch.item.file.transform.PassThroughLineAggregator" />
</property>
</bean> |
例2 内容を指定してcsvファイルに出力する場合
Job定義ファイル(job.xml):
<!-- ItemWriter定義 -->
<bean id="flatFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="resource" value="file:/csv/output.csv" />
<!-- lineAggregatorの設定 -->
<property name="lineAggregator">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
<!-- FieldExtractorの設定 -->
<property name="fieldExtractor">
<bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
<property name="names" value=" id, name, age" />
</bean>
</property>
</bean>
</property>
</bean> |
例3 複数のcsvファイルに出力する場合
SuffixCreatorクラス(OutputFileSuffixCreator.java):
…
// SuffixCreatorクラス
public class OutputFileSuffixCreator implements ResourceSuffixCreator {
public String getSuffix(int arg0) {
// 引数 + ”.csv”を返却
return arg0 + ".csv";
}
} |
Job定義ファイル(job.xml):
<!-- SuffixCreatorクラスを定義 -->
<bean id="outputfileSuffixCreator" class="example.OutputFileSuffixCreator" />
<!-- MultiResourceItemWriter定義 -->
<bean id="multiResourceItemWriter " class="org.springframework.batch.item.file.MultiResourceItemWriter">
<property name="resource" value="file:/csv/output" />
<!-- SuffixCreatorクラスの指定 -->
<property name="resourceSuffixCreator" ref="outputfileSuffixCreator " />
<!-- 1000行ごとに新しいファイルを作成 -->
<property name="itemCountLimitPerResource" value="1000" />
<!-- デリゲートするFileItemWriterの指定 -->
<property name="delegate" ref="flatFileItemWriter" />
</bean>
<!-- ItemWriter定義 -->
<bean id="flatFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
<!-- MultiResourceItemWriterにて"resource"定義を行うため、"resource"定義は不要です -->
<property name="lineAggregator">
<bean class="org.springframework.batch.item.file.transform.PassThroughLineAggregator" />
</property>
</bean> |
JDBCを使用したデータベース出力についての設定を以下に示します。
例
Job定義ファイル(job.xml):
<!-- ItemWriter定義 -->
<bean id="jdbcBatchItemWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<!-- データを出力するデータソースを設定 -->
<property name="dataSource" ref="jdbcDataSource" />
<!-- データ追加用SQL文の設定 -->
<property name="sql" value="insert into TESTTABLE(ID,NAME) values (:id, :name)" />
<!-- ItemSqlParameterSourceProviderの設定 -->
<property name="itemSqlParameterSourceProvider">
<bean class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" />
</property>
</bean> |
ポイント
Hibernateの設定方法については、“オープンJavaフレームワークユーザーズガイド Java EE 7編”の“3.3.3.4 O/Rマッピング連携(Hibernate)”を参照してください。
Hibernateを使用したデータベース出力についての設定を示します。
例
Job定義ファイル(job.xml):
<!-- ItemWriter定義 -->
<bean id="databaseItemWriter" class="org.springframework.batch.item.database.HibernateItemWriter">
<!-- データを出力するデータソースを設定 -->
<property name="dataSource" ref="hibernateDataSource" />
<!-- セッションファクトリを設定 -->
<property name="sessionFactory" ref="sessionFactory" />
</bean> |
ポイント
JPAの設定方法については、“オープンJavaフレームワークユーザーズガイド Java EE 7編”の“3.3.3.5 O/Rマッピング連携(JPA)”を参照してください。
JPAを使用したデータベース出力についての設定を示します。
例
Job定義ファイル(job.xml):
<!-- ItemWriter定義 -->
<bean id="databaseItemWriter" class="org.springframework.batch.item.database.JpaItemWriter">
<!-- データを出力するデータソースを設定 -->
<property name="dataSource" ref="jpaDataSource" />
<!-- エンティティファクトリを指定 -->
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean> |
ポイント
MyBatisの設定方法については、“オープンJavaフレームワークユーザーズガイド Java EE 7編”の“3.3.3.6 O/Rマッピング連携(MyBatis)”を参照してください。
MyBatisを使用したデータベース出力についての設定を示します。
例
Job定義ファイル(job.xml):
<!-- Mapperインターフェースを指定 -->
<mybatis-spring:scan base-package="example.mapper" />
<!-- ItemWriter定義 -->
<bean id="databaseItemWriter" class="org.mybatis.spring.batch.MyBatisBatchItemWriter">
<!-- データを出力するデータソースを設定 -->
<property name="dataSource" ref="mybatisDataSource" />
<!-- セッションファクトリを設定 -->
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<!-- 出力用メソッドを指定 -->
<property name="statementId" value="example.mapper.UserMapper.insertUser" />
</bean> |