【发布时间】:2021-09-15 16:28:16
【问题描述】:
我有以下 Pojo 课程:
public class Student {
String name;
Integer age;
List<Interest> interests;
}
public class Interest {
String name;
Date createdAt;
}
我有以下带有标题的 CSV 文件:
NAME,AGE,INTEREST_1,INTEREST_2,INTEREST_3,INTERESTS_ADDITIONAL
是否有可能有一个 FlatFileItemWriter 可以根据该标头写入 csv 文件?
每个学生兴趣列表中的前 3 个兴趣将进入第 3、第 4 和第 5 列,如果列表中超过 3 个,只需将他们的名字添加到第 6 列。
到目前为止,我一直使用类似这样的 FlatFileItemWriter:
public FlatFileItemWriter<Student> writer() {
FlatFileItemWriter<Student> writer = new FlatFileItemWriter<>();
writer.setResource(outputResource);
writer.setAppendAllowed(true);
writer.setLineAggregator(new DelimitedLineAggregator<Student>() {
{
setDelimiter(",");
setFieldExtractor(new BeanWrapperFieldExtractor<Student>() {
{
setNames(new String[] { "name", "age", "interest" });
}
});
}
});
return writer;
}
但这不适用于兴趣列表。 任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
只需编写您自己的自定义
LineAggregator来执行此操作,或使用ItemProcessor将Student和Interest转换为另一个与您要编写的CVS 匹配的java 类,然后使用常规的FlatFileItemWriter配置。
标签: java spring spring-batch