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
语句,无法在后续处理中传值。
以上方法全由作者亲测,成功后上传,如有问题,请给我留言
分享到:
相关推荐
首先,JdbcTemplate的`batchUpdate`方法是用于批量执行SQL语句的,如示例所示。在上述代码中,`batchUpdate`接收一个SQL语句的字符串数组,然后依次执行这些语句。例如,删除角色关联菜单的记录,接着插入新的关联...
对应的XML文件中,可以不写任何内容,因为注解已经包含了SQL语句。 然后在Service层中调用这个方法,例如: ```java @Service public class MyService { @Autowired private MyMapper myMapper; public void ...
4. 使用Spring的JdbcTemplate或NamedParameterJdbcTemplate执行SQL语句,进行数据库操作。 5. 如果涉及大量数据,可能需要分批处理,以避免因SQL语句过长或内存占用过多而导致的问题。 6. 在整个过程中,利用Spring...
P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...
开发者通常会定义一个DAO(Data Access Object)接口,该接口包含批量删除的方法,然后由Hibernate的Session实现这个接口,执行SQL删除语句。Session的批处理功能可以优化数据库操作,提高性能。 Spring框架则作为...
本项目“Web程序实现简易版PL/SQL和Excel表配置备份SQL语句”旨在构建一个基于Web的平台,以方便地管理和执行PL/SQL代码,并将数据库备份到Excel表格中。 1. **PL/SQL基础** PL/SQL是Oracle数据库系统的一部分,它...
4. **设置参数和类型**:如果SQL语句包含参数,使用`setXXX()`方法(如`setString()`, `setInt()`)为它们设置值,这些方法的第二个参数是参数的位置,通常是基于SQL语句中的问号(?). 5. **执行查询并处理结果**:...
`BatchPreparedStatementSetter`是一个接口,我们需要实现它的`setValues(PreparedStatement ps, int i)`方法,根据索引填充预编译的SQL语句,然后在`getBatchSize()`方法中返回批次大小。 下面是一个使用`...
5. **批处理**:JdbcTemplate支持批处理操作,可以通过`batchUpdate()`方法批量执行SQL语句,提高数据库操作效率。 6. **错误处理**:Spring的JDBC抽象层处理了许多底层的错误,比如关闭资源等,这使得代码更加健壮...
1. **JdbcTemplate**: 这是Spring JDBC的核心接口,提供了一组用于执行SQL语句的方法,如`update()`, `query()`, `execute()`等。它能处理数据库连接的打开和关闭,事务管理,异常处理等,让开发者专注于SQL语句本身...
例如,`JdbcTemplate`的`batchUpdate()`方法可以用于批量执行SQL语句。 9. **异常处理** Spring提供了统一的异常处理机制,将数据库异常转换为Spring的`DataAccessException`子类,简化了异常的捕获和处理。 10. ...
针对这一需求,本文将详细介绍并比较三种常用的批量更新方法:通过PL/SQL循环更新、使用单条SQL语句更新以及采用子查询的方式进行更新。 #### 一、通过PL/SQL循环更新 这种方式是通过定义一个游标(Cursor),然后...
如果需要批量执行SQL语句,JdbcTemplate还提供了`batchUpdate()`方法,可以一次执行多个更新操作。 9. **性能优化**: JdbcTemplate通过缓存预编译的SQL语句(PreparedStatement),提高了性能,并且可以避免多次...
4. **批处理**:支持批量执行SQL语句,提高数据库操作效率。 5. **事务管理**:可以与Spring的TransactionManager配合,实现声明式事务管理。 6. **结果集处理**:提供了多种方式(如List、Map等)来处理查询结果...
首先,我们了解JDBC的基本流程:加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL语句、处理结果集、关闭资源。这个过程繁琐且易出错,而Spring的JDBC抽象层通过AOP(面向切面编程)和模板方法...
另一种方法是使用原生SQL查询,这样可以直接控制SQL语句的生成,包括使用LIMIT和OFFSET关键字(对于MySQL等数据库)或ROW_NUMBER()函数(对于SQL Server)来实现分页。这同样可以绕过Hibernate的默认只进结果集行为...
- **JdbcTemplate**: 这是Spring JDBC最基础的模板类,提供了一组用于执行SQL语句的方法,如update()用于更新操作,query()用于查询操作。JdbcTemplate能够自动处理数据源的获取、关闭以及异常的捕获,使开发者无需...
在IT行业中,Spring MVC、MyBatis Plus以及AOP(面向切面编程)是Java Web开发中的重要组件,常用于构建高效、灵活的企业级应用。本项目“Spring MVC Mybatis Plus 实现AOP 切面日志系统”旨在提供一个基础的日志...
4. **PreparedStatementSetter**: 当需要在SQL语句中设置参数时,`PreparedStatementSetter`接口派上用场。开发者可以实现`setValues()`方法,以便为预编译的SQL语句设置参数值。 5. **NamedParameterJdbcTemplate*...
通过这个SpringJDBC.rar的案例,初学者可以学习到如何配置DataSource,如何创建JdbcTemplate实例,以及如何编写和执行SQL语句。同时,实践中还可以了解到如何将Spring JDBC整合到Spring Boot项目中,以及如何处理...