如何在Spring批处理中使用FlatFileItemReader忽略CSV中不需要的列

时间:2015-11-28 14:04:05

标签: java spring-batch

我遇到了一个问题,我有一个包含10列的CSV文件,只需要选择的列映射到我的Java对象。但是CSV是标题列,数据位置是固定的。所以我知道只有第1列到第3列对我有用,而且必须忽略其余部分。 例如: CSV是: A1,A2,A3,A4,A5,A6,A7,A8,A9,A10

我只需将A1到A3列映射到我的pojo。 我确定这不是正确的方法,但我尝试做这样的事情,但它不起作用。 Spring批处理试图将所有列值映射到我的pojo。

<property name="lineTokenizer">
    <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
        <property name="names" value="Name,Department,Age,,,,,,," />
    </bean>
</property>

<property name="fieldSetMapper">
    <bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
        <property name="prototypeBeanName" value="EmployeeDO" />
    </bean>

我还没有探索过弹簧批的所有功能,但是有什么东西可以轻松实现吗?任何帮助将不胜感激

1 个答案:

答案 0 :(得分:6)

DelimitedLineTokenizer.setIncludedFields()应该是解决问题的正确方法。

  

要按位置包含在输出中的字段(从0开始)。通过   默认包含所有字段,但可以将此属性设置为pick   从较大的一组中只抽出几个字段。请注意,如果字段名称是   如果提供,他们的号码必须与包含的字段数相匹配。