为了账号安全,请及时绑定邮箱和手机立即绑定

使用 FlatFileItemReader 读取元素列表

使用 FlatFileItemReader 读取元素列表

慕桂英546537 2023-06-21 16:08:25
比方说,我有一个对象Engine,唯一的属性是brandName,然后我有一个 CSV 文件如下:car_brand; bike_brand; airplane_brand; boat_brandbrand1;    brand2;     brand3;         brand4brand5;    brand6;     brand7;         brand8brand9;    brand10;    brand11;        brand12我想要做的是读取 CSV 文件并为每一行创建一个列表。由于我的项目是Spring批处理项目,我想使用Reader,但是怎么实现呢?我尝试这样做:@Beanpublic 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;}通常你只用阅读器创建一个对象,我如何用阅读器创建列表?我应该将方法类型更改为<List<Engine>>吗?编辑: 我的问题不是如何制作列表的 Reader,而是如何制作列表的 FlatFileItemReader,重复的问题不是我需要的答案。
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

您可以尝试以下操作:


@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);


查看完整回答
反对 回复 2023-06-21
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信