`

Spring中批量执行SQL语句

阅读更多

 

Spring 中批量执行 SQL 语句

        

批量执行的 SQL 语句有两种:

1、  格式相同,即 SQL 语句涉及到的字段名、个数和顺序都相同;

2、  格式不同,即 SQL 语句涉及到的字段名、个数不同。

 

一、           针对相同的 SQL 语句执行批量操作

 

SQL 语句如下所示,我将批量插入数据:

List< STUDENT > dtoList; // 这里面存的是即将插入到 student 表中的数据

String kpfbSql = "Insert Into STUDENT(ID,NAME,AGE) Values (?,?,?)" ;

 

BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() {

           public void setValues(PreparedStatement ps, int i) throws SQLException {

              // SQL 语句的参数赋值

              JXKP_KP_FBDTO dto = dtoList.get(i);

              ps.setString(1, dto.getID());

              ps.setString(2, dto.getNAME());

               ps.setString(3, dto.getAGE());

           }

           public int getBatchSize() {

              return dtoList.size();

           }

       };

int [] i = this .getJdbcTemplate().batchUpdate(kpfbSql, setter);

 

注: int [] i 中存放的是执行每条 SQL 语句时返回的成功条数的数组。因此,如果有插入失败的情况, 数组 i 中将会存在 0 这个值。给问号赋值的过程在方法内部完成。

 

 

二、           针对不同的 SQL 语句执行批量操作

 

SQL 语句如下所示,我将执行的是删除表中对应的数据:

// 更新学生表中 ID 信息

String idSql = "Update STUDENT set ID ='" + id + "'" ;

// 更新学生的语文成绩

String ywcjSql = "Update STUDENT set YWCJ ='60' Where ID=' " + id + "'" ;

// 更新学生的数学成绩

String sxcjSql = "Update STUDENT set SXCJ ='80' Where ID='" + id + "'" ;

// 更新学生的英语成绩

String yycjSql = "Update STUDENT set YYCJ ='20' Where ID='" + id + "'" ;

 

String[] sql = new String[]{idSql, ywcjSql, sxcjSql, yycjSql};

int [] i = this .getJdbcTemplate().batchUpdate(sql);

 

注: int [] i 中存放的是执行每条 SQL 语句时返回的成功条数的数组。 SQL 语句必须是完整 SQL 语句,无法在后续处理中传值。

 

 

以上方法全由作者亲测,成功后上传,如有问题,请给我留言

 

 

分享到:
评论

相关推荐

    Spring 中jdbcTemplate 实现执行多条sql语句示例

    首先,JdbcTemplate的`batchUpdate`方法是用于批量执行SQL语句的,如示例所示。在上述代码中,`batchUpdate`接收一个SQL语句的字符串数组,然后依次执行这些语句。例如,删除角色关联菜单的记录,接着插入新的关联...

    SpringBoot整合Mybatis连接SQL Server 跨库批量插入

    对应的XML文件中,可以不写任何内容,因为注解已经包含了SQL语句。 然后在Service层中调用这个方法,例如: ```java @Service public class MyService { @Autowired private MyMapper myMapper; public void ...

    excel转sql语句

    4. 使用Spring的JdbcTemplate或NamedParameterJdbcTemplate执行SQL语句,进行数据库操作。 5. 如果涉及大量数据,可能需要分批处理,以避免因SQL语句过长或内存占用过多而导致的问题。 6. 在整个过程中,利用Spring...

    P6SPY JDBC拦截打印sql语句 非常好的调试工具

    P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...

    struts2 hibernate spring 整合批量删除源码

    开发者通常会定义一个DAO(Data Access Object)接口,该接口包含批量删除的方法,然后由Hibernate的Session实现这个接口,执行SQL删除语句。Session的批处理功能可以优化数据库操作,提高性能。 Spring框架则作为...

    Web程序实现简易版PL/SQL和Execel表配置备份SQL语句

    本项目“Web程序实现简易版PL/SQL和Excel表配置备份SQL语句”旨在构建一个基于Web的平台,以方便地管理和执行PL/SQL代码,并将数据库备份到Excel表格中。 1. **PL/SQL基础** PL/SQL是Oracle数据库系统的一部分,它...

    hibernate执行外部sql

    4. **设置参数和类型**:如果SQL语句包含参数,使用`setXXX()`方法(如`setString()`, `setInt()`)为它们设置值,这些方法的第二个参数是参数的位置,通常是基于SQL语句中的问号(?). 5. **执行查询并处理结果**:...

    Spring JdbcDaoSupport 批量插入数据

    `BatchPreparedStatementSetter`是一个接口,我们需要实现它的`setValues(PreparedStatement ps, int i)`方法,根据索引填充预编译的SQL语句,然后在`getBatchSize()`方法中返回批次大小。 下面是一个使用`...

    Spring+JDBC实例

    5. **批处理**:JdbcTemplate支持批处理操作,可以通过`batchUpdate()`方法批量执行SQL语句,提高数据库操作效率。 6. **错误处理**:Spring的JDBC抽象层处理了许多底层的错误,比如关闭资源等,这使得代码更加健壮...

    spring_JDBC整合包

    1. **JdbcTemplate**: 这是Spring JDBC的核心接口,提供了一组用于执行SQL语句的方法,如`update()`, `query()`, `execute()`等。它能处理数据库连接的打开和关闭,事务管理,异常处理等,让开发者专注于SQL语句本身...

    spring的增删改查

    例如,`JdbcTemplate`的`batchUpdate()`方法可以用于批量执行SQL语句。 9. **异常处理** Spring提供了统一的异常处理机制,将数据库异常转换为Spring的`DataAccessException`子类,简化了异常的捕获和处理。 10. ...

    ORACLE 批量更新三种方式比较

    针对这一需求,本文将详细介绍并比较三种常用的批量更新方法:通过PL/SQL循环更新、使用单条SQL语句更新以及采用子查询的方式进行更新。 #### 一、通过PL/SQL循环更新 这种方式是通过定义一个游标(Cursor),然后...

    Spring框架中jdbcTemplate 的使用.doc

    如果需要批量执行SQL语句,JdbcTemplate还提供了`batchUpdate()`方法,可以一次执行多个更新操作。 9. **性能优化**: JdbcTemplate通过缓存预编译的SQL语句(PreparedStatement),提高了性能,并且可以避免多次...

    Spring的MVC Web应用中的持久层技术

    4. **批处理**:支持批量执行SQL语句,提高数据库操作效率。 5. **事务管理**:可以与Spring的TransactionManager配合,实现声明式事务管理。 6. **结果集处理**:提供了多种方式(如List、Map等)来处理查询结果...

    spring封装jdbc查询

    首先,我们了解JDBC的基本流程:加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL语句、处理结果集、关闭资源。这个过程繁琐且易出错,而Spring的JDBC抽象层通过AOP(面向切面编程)和模板方法...

    com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作 解决方案

    另一种方法是使用原生SQL查询,这样可以直接控制SQL语句的生成,包括使用LIMIT和OFFSET关键字(对于MySQL等数据库)或ROW_NUMBER()函数(对于SQL Server)来实现分页。这同样可以绕过Hibernate的默认只进结果集行为...

    Springjdbc

    - **JdbcTemplate**: 这是Spring JDBC最基础的模板类,提供了一组用于执行SQL语句的方法,如update()用于更新操作,query()用于查询操作。JdbcTemplate能够自动处理数据源的获取、关闭以及异常的捕获,使开发者无需...

    Spring mvc mybatis plus 实现AOP 切面日志系统

    在IT行业中,Spring MVC、MyBatis Plus以及AOP(面向切面编程)是Java Web开发中的重要组件,常用于构建高效、灵活的企业级应用。本项目“Spring MVC Mybatis Plus 实现AOP 切面日志系统”旨在提供一个基础的日志...

    spring_jdbc

    4. **PreparedStatementSetter**: 当需要在SQL语句中设置参数时,`PreparedStatementSetter`接口派上用场。开发者可以实现`setValues()`方法,以便为预编译的SQL语句设置参数值。 5. **NamedParameterJdbcTemplate*...

    SpringJDBC.rar_SpringJDBC_spring jdbc

    通过这个SpringJDBC.rar的案例,初学者可以学习到如何配置DataSource,如何创建JdbcTemplate实例,以及如何编写和执行SQL语句。同时,实践中还可以了解到如何将Spring JDBC整合到Spring Boot项目中,以及如何处理...

Global site tag (gtag.js) - Google Analytics