ページの先頭行へ戻る
Interstage Business Application Server オープンJavaフレームワークユーザーズガイド Java EE 7編
FUJITSU Software

4.7.7 ItemWriter

ItemWriterについて説明します。

4.7.7.1 対応形式

ItemWriterの対応形式は以下のとおりです。

ポイント

データベースの接続設定については、 “4.5 各起動方法におけるデータベースの接続設定”を参照してください。

4.7.7.2 csvファイルを使用する場合

例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>

4.7.7.3 データベースを使用する場合(JDBC)

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>

4.7.7.4 データベースを使用する場合(Hibernate)

ポイント

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>

4.7.7.5 データベースを使用する場合(JPA)

ポイント

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>

4.7.7.6 データベースを使用する場合(MyBatis)

ポイント

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>