我遇到了一个问题,我有一个包含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>
我还没有探索过弹簧批的所有功能,但是有什么东西可以轻松实现吗?任何帮助将不胜感激
答案 0 :(得分:6)
DelimitedLineTokenizer.setIncludedFields()
应该是解决问题的正确方法。
要按位置包含在输出中的字段(从0开始)。通过 默认包含所有字段,但可以将此属性设置为pick 从较大的一组中只抽出几个字段。请注意,如果字段名称是 如果提供,他们的号码必须与包含的字段数相匹配。