【问题标题】:Read specific column data which is long type by using Spring Batch in Spring Boot在 Spring Boot 中使用 Spring Batch 读取 long 类型的特定列数据
【发布时间】:2021-07-23 14:34:15
【问题描述】:

伙计们..!!

需要使用 Spring 批处理读取特定列数据。好吧,我正在创建一个需要读取特定列的 spring 批处理应用程序。

在我的 csv 文件中,我有一列“msisdn”,该字段映射到 POJO。我想读取 Long 数据类型的“msisdn”no 的值。

我正在参考下面的链接。

read only selective columns from csv file using spring batch

客户 POJO

public class Customer {

    private String id_type;
    private String id_number;
    private String customer_name;
    private String email_address;
    private LocalDate birthday;
    private String citizenship;
    private String address;
    private Long msisdn;
    private LocalDateTime kyc_date;
    private String kyc_level;
    private String goalscore;
    private String mobile_network;
}

我正在使用 CustomMapper 类来实现此功能。如您所见,CustomMapper 类实现了 FieldSetMapper 类型。 fieldSet 方法返回 String[] 数组,msisdn 是 Long 类型。无法理解如何获取 msisdn 列中的所有值,因为 fieldSet 只给出 String[] 类型的数据。

CustomMapper
============
public class CustomMapper implements FieldSetMapper<Customer> {

    @Override
    public Customer mapFieldSet(FieldSet fieldSet) throws BindException {
        String[] custArray = null;
        Customer customer = new Customer();
        customer.setMsisdn(fieldSet.get);
        return null;
    }

}

请帮我解决这个问题?

【问题讨论】:

    标签: spring-boot spring-batch


    【解决方案1】:

    您可以使用fieldSet.readLong(int index)fieldSet.readLong(String name) 从字段集中按名称或索引选择字段。显然,在您的项目阅读器中解析文件时应该选择此字段。

    【讨论】:

    • 好吧,如果我们写CustomFieldSetMapper,我们是否必须提到fieldSetMapper.setTargetType(Customer.class);我对此表示怀疑。你能澄清一下吗?
    • 不,如果你有一个自定义映射器,你只需要在你的FlatFileItemReader的配置中设置它:FlatFileItemReaderBuilder.fieldSetMapper(new CustomMapper())
    • 好吧,我用过这样的。FieldSetMapper fieldSetmapper = new FieldSetMapper() { @Override public Customer mapFieldSet(FieldSet fieldSet) throws BindException { Customer customer = new Customer(); customer.setMsisdn(fieldSet.readLong("msisdn"));回头客; } }; linemapper.setFieldSetMapper(fieldSetmapper);
    • yes 看起来不错,但请务必编辑您的问题并添加代码,而不是添加到 cmets 中。
    • 当然我会遵循你在评论中提到的标准@Mahmoud Ben Hassine
    猜你喜欢
    • 2021-05-12
    • 1970-01-01
    • 2020-09-24
    • 2017-02-16
    • 1970-01-01
    • 2017-09-27
    • 2016-10-10
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多