目前我們的應用程序使用Spring,SimpleJdbcTemplate & MySQL。在Spring + mysql中使用ACID屬性批量更新
使用的數據源是org.apache.commons.dbcp.BasicDataSource,其url屬性爲「rewriteBatchedStatements = true」。
在使用SimpleJdbcTemplate.batchUpdate(List<Object[]>)
進行批量插入的過程中,在輸入批處理中會有重複的記錄(基於我們正在剔除的表的主鍵)。
在重複記錄的情況是有可能
1)將所有的非重複記錄,並獲得有關成功的插入次數的反應呢?
OR
2)完全回滾batchInsert,沒有記錄應插入?
我們能夠使用mysql的「INSERT IGNORE」部分實現第一個需求。但SimpleJdbcTemplate.batchUpdate()
返回每個記錄更新(不能只捕獲插入的記錄計數忽略重複)
而要實現第二個要求,我們必須關閉「rewriteBatchedStatements」。但是這個參數在性能測試之後已經很好的調整了。所以我們不能將其設置爲「false」。
在第一行中提到的組件的約束範圍內,是否可以實現以上兩種情況之一?
我是新來的spring和jdbc世界,所以詳細的解釋會幫助我們更好。 謝謝