2015-10-19 63 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

相關問題