以下代码使用JdbcTemplate.batchUpdate()将行插入数据库;
Map<String,Object>[] batchValues = ...;
namedParameterJdbcTemplate.batchUpdate(sql, batchValues);
失败时,会引发 DataAccessException。无论如何,我看不到确定哪些行(即地图中的条目)有问题并导致异常。目前,当抛出这样的异常时,我们只是尝试独立地插入每一行。有更好的方法吗?谢谢
以下代码使用JdbcTemplate.batchUpdate()将行插入数据库;
Map<String,Object>[] batchValues = ...;
namedParameterJdbcTemplate.batchUpdate(sql, batchValues);
失败时,会引发 DataAccessException。无论如何,我看不到确定哪些行(即地图中的条目)有问题并导致异常。目前,当抛出这样的异常时,我们只是尝试独立地插入每一行。有更好的方法吗?谢谢
我看到两种可能性,应该根据要求做出决定。
你可以得到失败的批次,如下所示......
try {
this.jdbCtemplate.batchUpdate(QueryConstant.SAVE_USER_NOTIFICATION, batchValues.toArray(new Map[usersResponse.size()]));
} catch (DataAccessException e) {
int[] updateCounts = ((BatchUpdateException) e.getCause()).getUpdateCounts();
int count = 1;
for (int i : updateCounts) {
if (i == Statement.EXECUTE_FAILED) {
failedBatch.add(count);
}
count++;
}
logger.info("Batch {} failed out of {} ",failedBatch, usersResponse.size()); }