`
nesuk
  • 浏览: 169490 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

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

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

public int[] batchUpdate(String[] sql)
                  throws DataAccessException
Description copied from interface: JdbcOperations
Issue multiple SQL updates on a single JDBC Statement using batching.
Will fall back to separate updates on a single Statement if the JDBC driver does not support batch updates.

Specified by:
batchUpdate in interface JdbcOperations
Parameters:
sql - defining an array of SQL statements that will be executed.
Returns:
[b]an array of the number of rows affected by each statement[/b]
Throws:
DataAccessException - if there is any problem executing the batch



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

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

相关推荐

    Spring JdbcTemplate.batchUpdate 例子

    `JdbcTemplate`的`batchUpdate`方法就是用来实现这样的功能,它可以批量执行更新语句,如INSERT、UPDATE或DELETE。 `batchUpdate`方法的基本使用如下: ```java int[] result = jdbcTemplate.batchUpdate( ...

    spring-jdbcTemplate实例工程

    1. **JdbcTemplate对象**:这是Spring JdbcTemplate的核心,它包含了执行SQL语句的所有方法,如update()用于更新,query()用于查询,insert()用于插入等。 2. **参数绑定**:JdbcTemplate支持多种方式的参数绑定,...

    Spring JdbcTemplate 常用方法整理

    本文将深入探讨Spring JdbcTemplate的常用方法,并结合提供的`JsonBean.java`和`JdbcUtils.java`文件,来理解其在实际应用中的使用。 首先,JdbcTemplate的核心功能在于它提供了一系列的方法来执行SQL语句,包括...

    SpringJdbcTemplate封装工具类

    例如,大量数据的批量插入可能更适合使用JdbcTemplate的`batchUpdate()`方法,或者直接使用JDBC的PreparedStatement来提高效率。 9. **最佳实践** - 保持SQL语句简洁,避免在业务代码中混杂复杂的SQL。 - 避免...

    基于注解的Spring JdbcTemplate

    Spring会自动通过AOP代理处理这些注解方法,所以我们不需要为接口实现类。然而,如果你的项目需要,可以创建一个空实现。 ### 6. 使用Spring JdbcTemplate 在服务层或者控制器中,我们可以依赖注入`UserRepository...

    Spring框架JdbcTemplate类中查询方法介绍

    JdbcTemplate 类主要提供四类方法:execute 方法、update 方法及 batchUpdate 方法、query 方法及 queryForXXX 方法、call 方法。 一、 execute 方法 execute 方法用于执行任何 SQL 语句,一般用于执行 DDL 语句。...

    Spring JdbcTemplate api

    当需要进行批量更新操作时,`JdbcTemplate`提供了`batchUpdate`方法,开发者需要创建自己的`BatchPreparedStatementCreator`和`BatchPreparedStatementSetter`类来处理批量参数的设置。通过`getJdbcTemplate().batch...

    SSH笔记-Spring JdbcTemplate

    6. **批量操作**:JdbcTemplate还支持批量更新,使用`batchUpdate()`方法可以一次执行多条SQL更新语句,提高了性能。 7. **预编译的SQL(PreparedStatement)**:JdbcTemplate默认使用PreparedStatement,这是一个...

    使用Spring JDBCTemplate进行增删改查curd操作

    在Spring框架中,JdbcTemplate是用于简化数据库操作的重要工具,它是Spring JDBC模块的一部分。通过使用JdbcTemplate,开发者可以避免编写大量的重复代码,如手动管理连接、处理结果集等,从而专注于业务逻辑。本文...

    Spring JdbcTemplate

    以上就是关于Spring JdbcTemplate的基本介绍及其在实际项目中的应用。由于这个库主要是针对Oracle数据库设计的,所以很多特定的方法可能只适用于Oracle,比如处理lob类型数据、序列或者触发器相关的操作。在使用时,...

    Spring JDBCTemplate连接池jar包

    4. 使用JdbcTemplate方法:调用JdbcTemplate的相应方法,如`update()`, `query()`, `execute()`等,传入SQL和参数。 5. 处理结果:根据操作类型,处理返回的结果集或者受影响的行数。 6. 事务管理:如果需要,可以...

    strut2+spring+springjdbctemplate做的简易登录系统

    Struts2、Spring和Spring JDBC Template是Java Web开发中常用的三个框架,它们分别负责不同的职责。Struts2作为MVC(Model-View-Controller)框架,主要处理前端请求和业务逻辑;Spring则是一个全面的后端框架,提供...

    Spring-JdbcTemplate

    - `batchUpdate`:用于执行批量更新操作,提高效率。 - `call`:用于执行存储过程调用。 通过这些方法,开发者可以轻松地进行数据库操作,无需关注底层的资源管理和异常处理,从而提高了开发效率和代码质量。 总之...

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储过程,然后编写 Java 代码使用 Spring JdbcTemplate 调用...

    Spring--JdbcTemplate.pdf

    标题中提到的"JdbcTemplate"是Spring框架中提供的一个用于简化数据库操作的JDBC抽象库。它是对Java标准数据库编程接口JDBC的一种封装,旨在简化JDBC编程,减少样板代码,使得开发者在使用Spring框架时能够更便捷地对...

    Spring JdbcTemplate例子

    Spring JdbcTemplate是Spring框架中的一个核心组件,主要用来简化数据库操作。它提供了一种模板方法设计模式,将SQL语句的执行与结果处理进行了抽象,使得开发者可以更加专注于业务逻辑,而无需关心底层数据访问的...

    JdbcTemplate的批量方法使用

    总结来说,`JdbcTemplate`的批量方法通过`BatchPreparedStatementSetter`实现了高效的数据插入和删除。在处理大数据量时,这些方法能显著提升性能,减少数据库操作的复杂性,并降低了潜在的资源消耗。在实际开发中,...

    Spring JdbcTemplate查询实例

    你可以使用`update`方法执行增删改操作,如果出现异常,Spring会自动回滚事务,保证数据的一致性。 5. **与MyBatis的对比** MyBatis是一个更全面的ORM框架,允许编写XML或注解形式的映射配置。而Spring ...

    Druid数据库连接池的SpringJDBCTemplate所需的jar包

    Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,...

Global site tag (gtag.js) - Google Analytics