spring batch - 将对象数据写入多个文件

时间:2014-10-20 18:37:33

标签: spring spring-batch

在spring批处理中,我有一个要求,我有来自数据库的客户对象列表,我需要创建多个文本文件。

clas Customer{
    long customerId;
    string name;
    Address add;
    Phone phn;
}

class Address{
    string address;
    long pincode;
    string street;
}

class Phone{
    string phoneNumber;
    string desc;
}

我想将每个客户的数据写入不同的文本文件,例如

customer.txt -> customerId, name
address.txt -> address, pincode, street
phone.txt -> phoneNumber, desc

我尝试使用CompositeItemWriter,它可以将对象委托给不同的编写器,但我无法获得如何在编写器中检索特定对象或属性。

我无法获得任何示例或解释来实现CompositeWriter。有人可以帮我写作者的实施吗?还有其他更好的方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我能够使用CompositeItemWriter将每个客户的数据写入不同的文本文件。以下是我为客户手机提取的方式。我希望它有所帮助。

<bean id="compositeCustomerWriter"
        class="org.springframework.batch.item.support.CompositeItemWriter">
        <property name="delegates">
            <list>
                <ref bean="customerWriter" />
                <ref bean="customerPhoneWriter" />
                <ref bean="customerAddressWriter" />
            </list>
        </property>
</bean>

<bean id="customerPhoneWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
        <property name="resource" value="file:customer_phone_extract.txt" />
        <property name="lineAggregator" ref="customerPhonelineAggregator" />
</bean>

<bean id="customerPhonelineAggregator"
    class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
        <property name="delimiter" value="|" />
        <property name="fieldExtractor">
            <bean
                class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
                <property name="names"
                    value="phn.phoneNumber,phn.desc" />
            </bean>
        </property>
</bean>