2015-10-19 117 views

回答

0

Springbatch有可用出的现成的几个FieldSetMapper实现:Documentation (FieldSetMapper)

比如,你可以使用PassThroughFieldSetMapper获得FieldSet对象在您的处理器。你可以用ArrayFieldSetMapper来得到一个数组对象。我想你需要实现你自己的FieldSetMapper。例如,它可以有一个names属性(带一个setter)和一个targetClass属性(带一个setter)。使用Reflect,然后可以将对象转换为所需的类并根据作为参数传递的名称调用setter。

这里有一个FieldSetMapper的样子:

@Override 
public Report mapFieldSet(FieldSet fieldSet) throws BindException { 

    T object; 
    object.setField(fieldSet.readString(0)); 
    return object; 
} 

这里就是反映的样子:

Method method = object.getClass().getMethod(methodName); 
    method.invoke(object); 
+0

我已经更新的问题,其实我需要摆脱fieldSetMapper.setTargetType的,因为我不想继续添加新的POJO – explorer

+0

@explorer'setTargetType'方法只属于'BeanWrapperFieldSetMapper',所以你可以使用其他任何(甚至是自定义的)'FieldSetMapper'来删除它。 – Thrax

相关问题