目前我们的应用程序使用 Spring、SimpleJdbcTemplate 和 MySQL。
使用的数据源是 org.apache.commons.dbcp.BasicDataSource,其 url 属性为“rewriteBatchedStatements=true”。
在使用 进行批量插入期间,输入批次SimpleJdbcTemplate.batchUpdate(List<Object[]>)
中将存在重复记录(基于我们正在插入的表的主键)。
在重复记录的情况下是否可以
1) 插入所有非重复记录并得到关于成功插入次数的响应?
或者
2)完全回滚batchInsert,不应该插入记录?
我们能够使用 mysql 的“INSERT IGNORE”部分实现第一个要求。但是SimpleJdbcTemplate.batchUpdate()
返回更新的每条记录。(无法仅捕获插入的记录计数而忽略重复项)
为了实现第二个要求,我们必须关闭“rewriteBatchedStatements”。但是这个参数经过性能测试后已经微调了。所以我们不能把它设置为“假”。
在第一行中提到的我们使用的组件的约束范围内,是否有可能实现上述两种情况之一?
我是spring和jdbc世界的新手,所以详细的解释会更好地帮助我们。谢谢