首页 文章

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

提问于
浏览
0

在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 回答

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

相关问题