回答
這聽起來像塊圖案會解決的問題。您可以使用現有的Spring Batch組件來重新讀取數據庫,編寫自己的處理器,然後傳回給Spring Batch組件進行存儲。
說用例是這樣的; - 讀取記錄 - record.setTotalColumn(record.getColumn2()+ record.getColumn3()) - 更新
這種配置可能是這樣
<batch:job id="recordProcessor">
<batch:step id="recordProcessor.step1">
<batch:tasklet>
<batch:chunk reader="jdbcReader" processor="calculator" writer="jdbcWriter" commit-interval="10"/>
</batch:tasklet>
</batch:step>
</batch:job>
<bean id="jdbcReader" class="org.springframework.batch.item.database.JdbcCursorItemReader">
<property name="dataSource" ref="dataSource"/>
<property name="sql" value="select idColumn,column1,column2,totalColumn from my_table"/>
<property name="rowMapper" ref="myRowMapper"/>
</bean>
<bean id="jdbcWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="dataSource" ref="dataSource"/>
<property name="sql" value="update my_table set totalColumn = :value where idColumn = :id"/>
</bean>
<bean id="calculator" class="de.incompleteco.spring.batch.step.item.CalculationProcessor"/>
這意味着你唯一必須從頭開始寫「計算器處理器」,它可能是這樣的;
package de.incompleteco.spring.batch.step.item;
import org.springframework.batch.item.ItemProcessor;
public class CalculationProcessor implements ItemProcessor<MyObject, MyObject> {
@Override
public MyObject process(MyObject item) throws Exception {
//do the math
item.setTotalColumn(item.getColumn1() + item.getColumn2());
//return
return item;
}
}
非常感謝你。最後一件事,我必須做什麼關於springContext.xml? – user1744446 2013-04-23 14:17:10
上面的批處理作業xml會在您的springContext.xml中與批處理的其他最小設置 – 2013-04-23 14:26:00
一起使用我有一個類似的場景,每個作業實例必須讀取/更新1000行中的100行(即10個作業執行) 。 'sql'參數需要動態提供?怎麼樣? – Saad 2014-01-27 16:46:10
- 1. Spring批量讀取多條記錄並處理多條記錄
- 2. 在Spring批處理中讀取同一組記錄
- 3. Spring批處理不從數據庫讀取數據,也不會寫入文件
- 4. 從spring批處理java類讀取數據
- 5. Spring批處理:從Kafka讀取數據並寫入文件
- 6. Spring批處理:從數據庫讀取併發布到第三方webserivce
- 7. iOS Sqlite數據庫 - 批處理批量記錄
- 8. 在Spring批處理服務類中獲取數據庫連接
- 9. Spring批處理讀取一個key = value並將其加載到數據庫中
- 10. Spring批處理:文件未被讀取
- 11. Spring批處理項讀取監聽器
- 12. spring批處理:itemprocessor未獲取讀取器讀取的所有數據
- 13. 在Spring批處理中讀取並處理多個源文件
- 14. 在Spring批處理中查詢批處理作業元數據
- 15. Spring批處理的數據庫和元數據庫表
- 16. Spring批處理 - 使用內存數據庫處理大文件
- 17. 用於分佈式DB2數據庫的Spring批處理讀取器
- 18. Spring針對不同數據庫的批處理多個讀取器
- 19. Spring批處理 - 讀取.csv文件並將記錄寫入txt文件
- 20. Oracle數據庫中的Spring批處理作業信息庫
- 21. Spring批處理Singleton讀取器和多線程處理器
- 22. Firebase數據庫批處理
- 23. Oracle批處理數據庫
- 24. 春季批量從數據庫中提取xml記錄
- 25. Spring批處理:如何使用spring批處理從sftp服務器讀取文件並將其保存到數據庫中?
- 26. 彈簧批 - 讀取和處理了多少記錄
- 27. 春季批處理讀取文件及相關記錄
- 28. 插入批處理記錄
- 29. Spring批處理從多個來源讀取的作業
- 30. 批處理文件從文件名和目錄中讀取
你試圖更新檢索到的所有記錄上的'total'字段嗎?或只有一個簡要記錄? – 2013-04-23 13:10:32
我試圖更新所有記錄。沒有總結 – user1744446 2013-04-23 13:54:22