У меня есть 2 ItemWriters, один для вставки БД и один для обновления БД.
С использованием ClassifierCustomItemWriter, который я вызываю соответствующим ItemWriter для новой записи и обновляю существующие записи.
Здесь у меня есть беспокойство.Как узнать, произошло обновление или нет?Например, если «Идентификатор приложения» не существует в БД, ItemWriter не выдаст никакой ошибки, но я хочу знать, что обновление для этой записи не произошло, и зарегистрировать его.
Как я могу отслеживатьчто?
@Bean
public ClassifierCompositeItemWriter<TRSBatchEntryFormRequest> classifierCompositeItemWriter(ItemWriter<TRSBatchEntryFormRequest> databaseTableItemWriter, ItemWriter<TRSBatchEntryFormRequest> databaseTableUpdateItemWriter) {
ClassifierCompositeItemWriter<TRSBatchEntryFormRequest> classifierCompositeItemWriter = new ClassifierCompositeItemWriter<>();
classifierCompositeItemWriter.setClassifier((Classifier<TRSBatchEntryFormRequest, ItemWriter<? super TRSBatchEntryFormRequest>>) trsBatchEntryFormRequest -> {
if (trsBatchEntryFormRequest.getForm_status().equals("New")) {
return databaseTableItemWriter;
} else {
return databaseTableUpdateItemWriter;
}
});
return classifierCompositeItemWriter;
}
// Writer for DB
@Bean
public ItemWriter<TRSBatchEntryFormRequest> databaseTableItemWriter(DataSource springBatchDatasource) {
JdbcBatchItemWriter<TRSBatchEntryFormRequest> databaseItemWriter = new JdbcBatchItemWriter<TRSBatchEntryFormRequest>();
databaseItemWriter.setDataSource(springBatchDatasource);
logger.info("INSERT QUERY....: " + QUERY_INSERT_TRSEntryForms);
databaseItemWriter.setSql(QUERY_INSERT_TRSEntryForms);
databaseItemWriter.setItemSqlParameterSourceProvider(new TRSDBInputProvider());
return databaseItemWriter;
}
//Update Writer for DB
@Bean
public ItemWriter<TRSBatchEntryFormRequest> databaseTableUpdateItemWriter(DataSource springBatchDatasource) {
JdbcBatchItemWriter<TRSBatchEntryFormRequest> databaseItemWriter = new JdbcBatchItemWriter<TRSBatchEntryFormRequest>();
databaseItemWriter.setDataSource(springBatchDatasource);
logger.info("UPDATE QUERY....: " + QUERY_UPDATE_TRSEntryForms);
databaseItemWriter.setSql(QUERY_UPDATE_TRSEntryForms);
databaseItemWriter.setItemSqlParameterSourceProvider(new TRSDBInputProvider());
return databaseItemWriter;
}
Спасибо