在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。有人可以帮我写作者的实施吗?还有其他更好的方法吗?
提前致谢。
答案 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>