关于Spring的JdbcTemplate批量更新batchUpdate()方法的返回值为-2的异常

关于Spring的JdbcTemplate批量更新batchUpdate()方法的返回值为-2的异常


近日在使用JdbcTemplate做大量的数据库数据同步的工作,基本就是“从A库查询数据--生成CSV--解析成SQL插入B库”这样一个过程。因为使用的是JdbcTemplate,所以在将数据导入B库时采用的是“先批量删,再批量插入”的策略。如果B库有相同主键的记录,则会先删掉,然后再将数据批量插入,这样就避免了主键冲突异常。这样更新数据量=删除记录数,新增数据量=总数据量-更新数据量。 

但是在使用batchUpdate()函数时遇到了执行结果为-2的问题,先查查API: 

Java代码   收藏代码
  1. batchUpdate  
  2.   
  3. public int[] batchUpdate(String[] sql)  
  4.                   throws DataAccessException  
  5. Description copied from interface: JdbcOperations  
  6. Issue multiple SQL updates on a single JDBC Statement using batching.  
  7. Will fall back to separate updates on a single Statement if the JDBC driver does not support batch updates.  
  8.   
  9. Specified by:  
  10. batchUpdate in interface JdbcOperations  
  11. Parameters:  
  12. sql - defining an array of SQL statements that will be executed.  
  13. Returns:  
  14. [b]an array of the number of rows affected by each statement[/b]  
  15. Throws:  
  16. DataAccessException - if there is any problem executing the batch  


返回值为一个整型的数组,数组的每个元素值对应每条SQL影响的数据库的记录数。 
这样无论如何负值也无法理解的。网上查询有地方说是驱动的问题,然后动手用JDBC的PreparedStatement测试了一把,同样的结果。那么说,出现这种结果的根本原因是JDBC驱动。 

从Oracle的官网下载了Oracle11gR2的最新驱动ojdbc6.jar,目前问题仍然存在。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring JdbcTemplateSpring框架中的一个重要组件,它为开发者提供了一个简单方便、易于扩展的JDBC操作方式。JdbcTemplate提供了许多有用的方法,其中之一就是 batchUpdate()。它实现了批量更新操作,可以显著提高数据库操作效率。 batchUpdate()方法用于执行批量更新操作,可以一次性执行多条SQL语句,同时返回每条SQL语句的更新数量,这在大数据量插入或更新时格外有用。开发者只需要将所有的SQL语句存储在一个字符串数组中,然后将该数组传递给batchUpdate()方法即可。batchUpdate()方法会返回一个int类型的数组,其中每个元素表示相应的SQL语句所更新的记录数。 例如,以下代码展示了如何使用batchUpdate()方法: ```java String[] sqls = {"INSERT INTO user(name, age) VALUES ('Tom', 28)", "UPDATE user SET age = 29 WHERE name = 'Tom'", "DELETE FROM user WHERE name = 'Tom'"}; int[] counts = jdbcTemplate.batchUpdate(sqls); ``` 上述代码中,我们将三个SQL语句存储在一个字符串数组sqls中,然后使用jdbcTemplate.batchUpdate(sqls)执行批量更新操作。最后,我们将每个SQL语句更新的记录数存储在一个int数组counts中。 总之,Spring JdbcTemplatebatchUpdate()方法是一个高效的数据库操作方法,可以为开发者提供更快速、更可靠的JDBC操作方式。同时,它还具有批处理的优点,可以大大节省数据库操作的时间和资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值