`

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语句示例

    本篇文章主要介绍了Spring 中jdbcTemplate 实现执行多条sql语句示例,可以对多个表执行多个sql语句,有兴趣的可以了解一下。

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

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

    Spring中文帮助文档

    11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. 更新数据库 11.2.9. 获取自动生成的主键 11.3. 控制数据库连接 11.3.1. DataSourceUtils类 11.3.2. SmartDataSource接口 11.3.3. AbstractDataSource类 ...

    互联网Java架构师面试题.pdf

    分页插件的原理是通过在 SQL 语句中添加分页参数来实现的。 11. MyBatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式? MyBatis 将 sql 执行结果封装为目标对象并返回,通过使用 resultMap 来...

    java面试题互联网大厂面试题

    #{}是用于将参数传递给SQL语句,${}是用于将参数传递给SQL语句,并且可以将参数作为SQL语句的一部分。 7. 当实体类中的属性名和表中的字段名不一样,怎么办?可以使用MyBatis的TypeHandler机制来解决这个问题。 8. ...

    Spring API

    11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. 更新数据库 11.2.9. 获取自动生成的主键 11.3. 控制数据库连接 11.3.1. DataSourceUtils类 11.3.2. SmartDataSource接口 11.3.3. AbstractDataSource类 ...

    1000道互联网java工程师面试题

    3. MyBatis框架的缺点:(1)学习成本高、需要掌握SQL语句和Mapper文件配置、需要在Mapper文件中编写SQL语句等。 4. MyBatis框架适用场合:(1)大型项目中需要复杂的数据库交互、需要高效的数据库访问、需要灵活的...

    spring-data-ebean:用于Spring数据的Ebean实现,简化了创建基于Ebean的数据访问层的开发。超简单,超强大的ORM框架,OQL,SQL,ES多查询引擎,超越JPA,Hibernate,Mybatis

    春天数据bean Spring数据的Ebean实现。... 使用JDBC简单语句(不是PreparedStatement)执行查询 根据主键删除单个实体 为什么选择 我选择考虑的框架条件: 该框架应包含(而不是隐藏)我们正在使用SQ

    1000道 互联网Java工程师面试题

    MyBatis动态sql可以动态生成sql语句来实现灵活的数据库交互。 Spring框架 * Spring是什么?Spring是一个基于Java的开源框架,提供了企业级应用开发的解决方案。 * Spring的优点:灵活、可扩展、高效、易于使用等。...

    xorm:xorm是一个简单而强大的Go语言ORM库,通过它可以使数据库操作非常正确。本库是基于原版xorm的定制增强版本,为xorm提供类似ibatis的配置文件及动态SQL支持,支持AcitveRecord操作

    特性支持Struct和数据库表之间的灵活映射,并支持自动同步事务支持,支持嵌套事务(支持类JAVA Spring的事务传播机制)同时支持原始SQL语句和ORM操作的混合执行使用连写来简化调用支持使用Id,In,Where,Limit,...

    基于SSH2图书管理系统升级版(源码+运行截图+演示视频).zip

    基于SSH2图书管理系统升级版(源码+运行截图+演示视频).zip ...2 执行php_db.sql语句创建数据库 3 导入项目,运行项目,这是一个前后端不分离的项目,前端采用JSP,将项目放在Tomcat容器中即可运行

    1000道 互联网Java架构师面试题.pdf和JAVA核心知识整理.zip

    12、如何执行批量插入? 13、如何获取自动生成的(主)键值? 14、在 mapper 中如何传递多个参数? 15、Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql? 16、Xml 映射文件中,除了常见的 select|insert|updae...

    iBATIS实战

    5.1.1 用于非查询SQL语句的SqlMap API 82 5.1.2 非查询已映射语句 83 5.2 插入数据 84 5.2.1 使用内联参数映射 84 5.2.2 使用外部参数映射 85 5.2.3 自动生成的键 86 5.3 更新和删除数据 88 5.3.1 处理并发更新 88 ...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题74:sql语句优化小技巧 Java面试题75:批量插入几百万条数据 Java面试题76:有没有使用过redis Java面试题77:redis的使用场景 Java面试题78:redis存储对象的方式 Java面试题79:redis数据淘汰机制 Java...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题74:sql语句优化小技巧.mp4 │ Java面试题75:批量插入几百万条数据.mp4 │ Java面试题76:有没有使用过redis.mp4 │ Java面试题77:redis的使用场景.mp4 │ Java面试题78:redis存储对象的方式.mp4 │...

    Java面试宝典2020修订版V1.0.1.doc

    32、SQL语句执行顺序 51 33、null的含义 52 34、mysql分页 52 35、MySQL、SqlServer、oracle写出字符存储、字符串转时间 52 36、update语句可以修改结果集中的数据吗? 53 37、oracle如何设置主键自动增长? 53 38、...

    java开源包1

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包11

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包2

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包3

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

Global site tag (gtag.js) - Google Analytics