我有一個表A,用MyBatisPagingItemReader讀取,處理,用MyBatisBatchItemWriter將結果寫入表B,然後我想刪除我已經處理的記錄在表A中,該怎麼辦?使用spring-batch,如何刪除已處理的數據
0
A
回答
0
我想這個自定義動作的最佳方式是添加StepListener。 像這樣
@Bean
public Step stepA(ItemReader<String> readerA, ItemWriter<String> writerA) {
return stepBuilderFactory.get("stepA").<String, String> chunk(1)
.reader(readerA).writer(writerA).listener(stepListener()).build();
}
你必須實現StepExecutionListener。
public class CustomStepListener implements StepExecutionListener {
@Override
public void beforeStep(StepExecution stepExecution) {
System.out.println("StepExecutionListener - beforeStep");
}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
System.out.println("StepExecutionListener - afterStep. Here we will delete all records");
return null;
}
}
在這一步,你願意,你可以刪除記錄的範圍。 SqlQuery,Repository等
0
我會建議使用CompositeItemWriter。添加MyBatisBatchItemWriter作爲第一個寫入器並添加第二個寫入器,刪除表A中的條目。
這樣,所有內容都運行在同一個事務中;因此,不存在數據不一致的風險。
相關問題
- 1. 如何使用刪除處理程序
- 2. 如何處理backstack引用已刪除的項目
- 3. 在Firebase中處理已刪除的ID
- 4. 如何在Git下處理一堆已刪除的文件?
- 5. 如何處理活動流中已刪除的照片
- 6. 在MATLAB中刪除/處理數據
- 7. 如何處理用戶刪除
- 8. 團隊項目刪除停留在「已刪除(處理)」
- 9. SQL數據庫已刪除標誌並已刪除已刪除對於
- 10. PHP/MYSQL - 使用預處理語句刪除數據庫
- 11. SpringBatch:動態數據源值
- 12. 如何處理動態數據刪除命令?
- 13. 數據庫:關於更新和刪除 - 如何處理?
- 14. 如何刪除正在處理的SMS?
- 15. 如何在從Laravel的模型中刪除數據之前處理數據?
- 16. 如何使用use-default-template = false處理portlet的刪除操作?
- 17. 使用已刪除的函數std :: unique_ptr
- 18. 如何使用AMO(分析管理對象)刪除數據庫?
- 19. 我們如何處理Azure數據管理網關中的更新和刪除
- 20. 使用mousepressed()處理刪除矩形
- 21. 使用Python刪除處理指令lxml
- 22. 處理Shift +刪除
- 23. 如何處理刪除DOM效果?
- 24. 如何刪除文件處理C++中
- 25. SQL:你如何處理條件刪除?
- 26. 如何使用ID在批處理中刪除多個對象?
- 27. 如何使用批處理文件刪除換行
- 28. 如何使用rabbitmq批處理文件刪除隊列
- 29. 如何使用批處理文件刪除文件
- 30. Gridview顯示已刪除的數據
我會推薦這種方法,因爲偵聽器在單獨的事務中運行。 (看看這篇文章:https://blog.codecentric.de/en/2012/03/transactions-in-spring-batch-part-2-restart-cursor-based-reading-and-listeners/)。 –