微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – BeanWrapperFieldsetMapper以每个字段为基础映射PropertyEditor

我正在使用spring批处理文件进行数据库处理,目前我正在使用PropertyEditors将分隔文件中的字符串转换为某个对象,如下所示.

Mappropertyeditor> editors = new HashMap<>();
CustomDateEditor dateEditor = new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true);
editors.put(Date.class,dateEditor);

因此,如果我有一个Date字段,我使用CustomDateEditor并成功解析给定的格式日期字符串.但是,如果我在同一个文件中有更多日期字符串,格式不同,我无法解析它们.我需要的是将编辑器与字段相关联,那么有没有办法可以做到这一点?

最佳答案
如果我正确理解了这个问题,您希望两个不同的列具有不同的日期格式(不同的行具有不同的格式).您可以通过实现FieldSetMapper来实现,如docs中所述.

@Bean
public FlatFileItemReaderClassPathResource("sample-data2.csv"));
    reader.setLineMapper(new DefaultLineMapperetokenizer(new DelimitedLinetokenizer() {
                {
                    setNames(new String[] { "firstName","lastName","fDate","sDate" });
                }
            });
            setFieldSetMapper(new PersonMapper());
        }
    });
    return reader;
}

执行:

public class PersonMapper implements FieldSetMapperirstName(fieldSet.readString("firstName"));
    person.setLastName(fieldSet.readString("lastName"));
    person.setFirstDate(fieldSet.readDate("fDate","MM/dd/yyyy"));
    person.setSecondDate(fieldSet.readDate("sDate","dd-MMM-yyyy"));
    return person;
}

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐