Spring JdbcTemplate.batchUpdate()失败时尝试的最佳策略

时间:2013-09-30 08:27:47

标签: spring spring-data

以下代码使用 JdbcTemplate.batchUpdate()将行插入数据库;

Map<String,Object>[] batchValues = ...;
namedParameterJdbcTemplate.batchUpdate(sql, batchValues);

失败时,抛出DataAccessException。 我还没有看到确定哪些行(即地图中的条目)有问题并导致异常。目前,当抛出这样的异常时,我们只是尝试独立地插入每一行。有更好的方法吗? 感谢

2 个答案:

答案 0 :(得分:0)

我看到两种可能性,应根据要求做出决定。

  1. 回滚交易,然后重试。这取决于异常的类型。如果存在约束违规异常,那么唯一的方法是更正数据并重试该操作。 这是一个很好的方法,所有或没有遵循。您确切知道是否已完成数据库操作。
  2. batchUpdate为您提供更新计数。 AFAIK,您可以安全地将其视为批处理列表中更新的行数。当jdbc驱动程序不支持批量更新时,这可能会有问题,spring会自动回退到单个语句执行。当操作可重做时,最好使用此方法。

答案 1 :(得分:0)

您可能会遇到失败的批处理,如下所示...

count(axis=1)