gpt4 book ai didi

java - 使用 FlatFileItemReader 读取元素列表

转载 作者:行者123 更新时间:2023-11-30 05:30:21 24 4
gpt4 key购买 nike

假设我有一个对象 Engine,唯一的属性是 brandName,然后我有一个 CSV 文件,如下所示:

car_brand; bike_brand; airplane_brand; boat_brand
brand1; brand2; brand3; brand4
brand5; brand6; brand7; brand8
brand9; brand10; brand11; brand12

我想要做的是读取 CSV 文件并为每一行创建一个列表。

由于我的项目是Spring批处理项目,我想使用Reader,但是我该怎么做?

我尝试这样做:

@Bean
public FlatFileItemReader<Engine> reader() {
FlatFileItemReader<Engine> reader = new FlatFileItemReader<Project>();
reader.setResource(new ClassPathResource("file.csv"));
reader.setLinesToSkip(1);
reader.setLineMapper(new DefaultLineMapper<Project>() {
{
setLineTokenizer(new DelimitedLineTokenizer() {
{
setNames(***);
}
});
setFieldSetMapper(new BeanWrapperFieldSetMapper<Project>() {
{
setTargetType(Engine.class);
}
});
}
});
return reader;
}

通常你只用 Reader 创建一个对象,我如何用 Reader 创建 List?
我应该将方法类型更改为 > 吗?

<小时/>

编辑:我的问题不是如何制作列表的 Reader,而是如何制作列表的 FlatFileItemReader,重复的问题不是我需要的答案。

最佳答案

您可以尝试以下操作:

@Bean
LineMapper<List<Engine>> lineMapper() {
return new LineMapper<List<Engine>>() {
@Override
public <List<Engine>> mapLine(String line, int lineNum) throws Exception {
String[] tokens = line.split(";");
if (tokens.length < 1) {
throw new DataIntegrityViolationException("Expecting at least one token in input line: " + line);
}
List<Engine> data = new ArrayList<Engine>;
for (String token : tokens) {
data.add(Engine.of(token));
}
return data;
}
};
}

...

FlatFileItemReader<List<Engine>> itemReader = new FlatFileItemReader<>();
itemReader.setLineMapper(lineMapper);

关于java - 使用 FlatFileItemReader 读取元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57688700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com