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

TuW*_*TuW 5 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>
Run Code Online (Sandbox Code Playgroud)

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

Luc*_*cci 7

DelimitedLineTokenizer.setIncludedFields() 应该是解决问题的正确电话.

要按位置包含在输出中的字段(从0开始).默认情况下,会包含所有字段,但可以将此属性设置为仅从较大的集合中选择几个字段.请注意,如果提供了字段名称,则其编号必须与包含的字段数相匹配.