我正在使用一個批處理,它讀取每一行並插入到db以及寫入文件中。我想在數據庫以及文件中寫下這些數據。所以需要使用ClassifierCompositeItemWriter
來調用特定的作者。我有一個具有以下行文件:根據操作類型調用特定的作家?
DATA,I,1,John,Shiazo,Sushi
DATA,U,8,Pablo,Carmen
DATA,D,9,Diego,Sergio
DATA,I,10,rucha,rekha
在這裏,我代表插入,U表示更新和d代表刪除。我應該如何調用一個特定的作家插入,其他是爲了更新,還有一個是爲了刪除。這三個編寫者將根據操作(插入,更新和刪除)以不同的方式工作,並且還有一個編寫者總是用於在文件中寫入數據。
下面是我的示例代碼:
@Classifier
public List<String> classify(Object object) {
String type = "Success";
List<String> list = new ArrayList<String>();
if(person.getOperationType().contentEquals("I")){
String insert = "I";
list.add(type);
list.add(insert);
}else if(person.getOperationType().contentEquals("U")){
String update = "U";
list.add(type);
list.add(insert);
}else{
delete = "D";
list.add(type);
list.add(delete);
}
}
示例XML代碼作者:
<bean id="classifierFileItemWriter" class="org.springframework.batch.item.support.ClassifierCompositeItemWriter" scope="step"> <property name="classifier"> <bean class="org.springframework.classify.BackToBackPatternClassifier"> <property name="routerDelegate">
<bean class="com.iz.batchprocessing.writer.SuccessFailClassifier" scope="step"/>
</property>
<property name="matcherMap">
<map>
<entry key="I" value-ref="jdbcInsertItemWriter" /> //insert writer, here I want access ArrayList
<entry key="U" value-ref="jdbcUpdateItemWriter" /> //update writer, here I want access ArrayList
<entry key="D" value-ref="jdbcDeleteItemWriter" /> //delete writer, here I want access ArrayList
<entry key="Success" value-ref="successMultiFileItemWriter" /> //common file writer
</map>
</property>
</bean>
</property> </bean>
請告訴我,我該怎麼辦呢?或者還有其他方法可以實現嗎?
你準備好這份清單的哪個位置?在處理器?爲什麼你需要三個獨立的作家,一個作家中的三種不同的方法不起作用? –
是你的問題,只是問,如何使用'ClassifierCompositeItemWriter'? –
不,我的問題不是如何使用'ClassifierCompositeItemWriter'。我正在編寫分類器中準備這份清單。由於我使用spring批處理的xml配置,因爲我對Spring批處理知道得太多,所以我無法在spring批處理中創建三種不同的方法。如果您知道,請發佈示例代碼。 我想從分類器發送多個參數,例如「Success and I」或「Success and D」或「Success and U」。只有在這一點上,我堅持着。 – rucha