Java Spring批处理-如何在处理单个记录后将数据写入多行?
我有如下的bean类-Java Spring批处理-如何在处理单个记录后将数据写入多行?,java,spring-batch,flatfilereader,Java,Spring Batch,Flatfilereader,我有如下的bean类- public class Account { private String strAccNumber = ""; private List<Account> accountList = new ArrayList<Account>(); // getter setter .... ... @Override public String toString() { // code for PassT
public class Account {
private String strAccNumber = "";
private List<Account> accountList = new ArrayList<Account>();
// getter setter
....
...
@Override
public String toString() {
// code for PassThroughLineAggregator
String data="";
for (int j=0; j<accountList.size(); j++) {
Account bean = accountList.get(j);
data = data + bean.getStrAccNumber();
if (j<(accountList.size()-1)) {
data = data + "\n";
}
}
return data;
}
}
公共类帐户{
私有字符串strAccNumber=“”;
私有列表accountList=new ArrayList();
//吸气剂设定器
....
...
@凌驾
公共字符串toString(){
//PassThroughLineAggregator的代码
字符串数据=”;
对于(int j=0;j您需要实现自己的LineAggregator
。这就是提供写入文件的字符串的原因。在您的情况下,您将编写一个返回真正多行的字符串的字符串
您可以在此处的文档中阅读有关LineAggregator
接口的更多信息:您需要实现自己的LineAggregator
。这就是提供写入文件的字符串的原因。在您的情况下,您将编写一个返回真正多行的字符串
您可以在此处的文档中阅读有关LineAggregator
接口的更多信息:请告诉我有关您的读卡器和处理器的信息。我们将了解您的最佳选择Writer@NghiaDo:请查看更新的代码。请告诉我有关您的阅读器和处理器的信息。我们将了解您的最佳选择Writer@NghiaDo:请查看更新的代码我尝试了PassThroughLineAggregator,但在xlsAs中为空[]。您需要为此用例实现自己的代码。是。它现在使用PassThroughLineAggregator工作,但问题是我的数据是否包含下一行(\n)数据拆分并写入CSVI的下一行如果您不想将\n
用作新行,则需要将其转义,就像其他将\n
写入文件时一样。我尝试了PassThroughLineAggregator,结果为空[]在XLSA中,您可以。您需要为此用例实现自己的。是的。它现在正在使用PassThroughLineAggregator工作,但问题是我的数据是否包含下一行(\n)数据拆分并写入下一行CSVI如果您不想将\n
用作新行,则需要将其转义,就像将\n
写入文件时一样。
<bean id="flatFileReader" class="org.springframework.batch.item.file.FlatFileItemReader"
scope="step">
<property name="resource" value="classpath:springBatch.csv" />
<property name="strict" value="false"></property>
<property name="linesToSkip" value="1" />
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="names" value="ACC#" />
</bean>
</property>
<property name="fieldSetMapper">
<bean
class="com.abc.reader.AccountDetailsFieldSetMapper" />
</property>
</bean>
</property>
</bean>
<bean id="flatFileProcessor"
class="com.abc.processor.AccountItemProcessor"
scope="step"></bean>
<bean id="flatFileWriter"
class="com.abc.FlatFileItemWriterListener"
scope="step">
<property name="resource" value="classpath:springBatch1.csv" />
<property name="lineAggregator">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
<property name="fieldExtractor">
<bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
<property name="names" value="strAccNumber" />
</bean>
</property>
</bean>
</property>
</bean>
public class AccountItemProcessor implements ItemProcessor<Account, List<Account>>{
@Override
public List<Account> process(Account accObj) throws Exception {
// logic..
}