Я работаю с одной партией, которая читает каждую строку и вставляет в 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 означает удаление. Как я могу назвать один конкретный сценарий для вставки, другой - для обновления, а еще один - для удаления. Этот три автора будут работать по-разному на основе операций (Insert, Update и Delete), и есть еще один сценарий, который всегда будет работать для записи данных в файл.
Ниже мой пример кода:
@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'. Я готовлю этот список в классификаторе писателя. Поскольку я использую xml-конфигурацию весенней партии, так как я много знаю о весенней партии, я не могу делать три разных метода в весенней партии. Если вы знаете, отправьте пример кода. Я хочу отправить несколько параметров из классификатора, таких как «Успех и я» или «Успех и D» или «Успех и U». На данный момент только я застрял. – rucha