Spring批处理:FieldSetMapper应将field设置为null而不是empty

时间:2014-10-16 15:26:14

标签: spring-batch

我正在使用spring批处理来读取具有 7字段的管道(|分隔)分隔文件。我创建了一个名为MyLineMapper的类,它扩展了spring的FieldSetMapper。此类将文件中提供的字段值映射到我的对象(XYZ类型)。现在的问题是我在扩展FieldSetMapper的类中获得的fieldSet对象包含在分隔值中不存在的字段的空值。

例如: 假设分隔文件格式如下: | ID | Country | City | Pin | 假设我在文件中提供以下行: | 1 | India | 如您所见,上面的行不包含City和Pin的信息。因此,我希望FieldSet对象应包含这两个fiels(City和Pin)的Null值而不是空字符串。我不想要空值,因为Null会帮助我知道该字段是否实际存在于文件中。

我怎样才能做到这一点?我是否需要扩展我用于标记化的DelimitedLineTokenizer?或者这是一种简单的方法吗?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

来自FieldSetMapper javadoc

  

自定义FieldSet值转换为所需的方式   注入原型的类型有几种选择。您   可以通过customEditors直接注入PropertyEditor实例   属性,或者你可以覆盖createBinder(Object)和   initBinder(DataBinder)方法,或者您可以提供自定义FieldSet   实施

根据目标bean的类型,使用默认的Spring约定完成转换。如果您需要其他类型的逻辑,请编写自己的逻辑。