关于DBUtils中QueryRunner看批量删除语句batch

//批量删除

public void delBooks(String[] ids) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
Object[][] params = new Object[ids.length][];//高维确定执行sql语句的次数,低维是给?赋值
for (int i = 0; i < params.length; i++) {
params[i] = new Object[]{ids[i]};//给“?”赋值
}
qr.batch("delete from books where id=?", params);
}

源码实现:

public int[] batch(String sql, Object[][] params) throws SQLException {
Connection conn = this.prepareConnection();

return this.batch(conn, true, sql, params);
}

private int[] batch(Connection conn, boolean closeConn, String sql, Object[][] params) throws SQLException {
if (conn == null) {
throw new SQLException("Null connection");
}

if (sql == null) {
if (closeConn) {
close(conn);
}
throw new SQLException("Null SQL statement");
}

if (params == null) {
if (closeConn) {
close(conn);
}
throw new SQLException("Null parameters. If parameters aren‘t need, pass an empty array.");
}

PreparedStatement stmt = null;
int[] rows = null;
try {
stmt = this.prepareStatement(conn, sql);

for (int i = 0; i < params.length; i++) {
this.fillStatement(stmt, params[i]);
stmt.addBatch();
}
rows = stmt.executeBatch();

} catch (SQLException e) {
this.rethrow(e, sql, (Object[])params);
} finally {
close(stmt);
if (closeConn) {
close(conn);
}
}

return rows;
}

解读: 因为params是一个二维数组, 所以往preparedStatement中赋值的时候使用了for循环, 然后通过preparedstatement.addBatch() 进行批量添加, 然后执行executeBatch()进行操作.

本文转自:https://www.cnblogs.com/wang-meng/p/5525389.html

时间: 2024-10-16 08:07:25

关于DBUtils中QueryRunner看批量删除语句batch的相关文章

[JavaWeb]关于DBUtils中QueryRunner的一些解读.

前言:[本文属于原创分享文章, 转载请注明出处, 谢谢.]前面已经有文章说了DBUtils的一些特性, 这里再来详细说下QueryRunner的一些内部实现, 写的有错误的地方还恳请大家指出. QueryRunner类 QueryRunner中提供对sql语句操作的API它主要有三个方法 query() 用于执行select update() 用于执行insert/update/delete batch() 批处理 1,Query语句先来看下query的两种形式, 我们这里主要讲第一个方法, 因

[JavaWeb]关于DBUtils中QueryRunner的一些解读(转)

QueryRunner类 QueryRunner中提供对sql语句操作的API它主要有三个方法 query() 用于执行select update() 用于执行insert/update/delete batch() 批处理 1,Query语句先来看下query的两种形式, 我们这里主要讲第一个方法, 因为我们用C3P0来统一管理connection.(QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()))query(sql,Re

使用回调函数,简单模拟dbutils中Queryrunner的工作原理,并重写Queryrunner,使其使用起来更加简单方便

所谓回调,就是在执行某个程序时,具体的封装处理由第三方类来实现,简单一点说就是记录内部,再出来(由第三方类可以对数据进行处理),再返回去继续执行,这个过程就是回调.想要程序具有记录内部的功能就必须定义一个规范,也就是接口,即你的程序出来被其他类处理了,但你规定了还要返回原程序. 下面看一个简单的例子: /** * @描述:回调函数--记录内部,再出来返回去的过程就叫回调 * @author cxie */ public class CopyOfCallBackDemo { public stat

angularJs获取复选框中id 进行批量删除

主要思路:我们需要定义一个用于存储选中 ID 的数组,当我们点击复选框后判断是选择还是取消选择,如果是选择就加到数组中,如果是取消选择就从数组中移除.在点击删除按钮时需要用到这个存储了 ID 的数组.这里我们补充一下 JS 的关于数组操作的知识(1)数组的 push 方法:向数组中添加元素(2) 数组的 splice 方法:从数组的指定位置移除指定个数的元素 ,参数 1 为位置 ,参数2 位移除的个数(3)复选框的 checked 属性:用于判断是否被选中 具体代码: $scope.select

删除功能的实现(单个删除与批量删除)

2.1学生信息删除的实现 因为实体类已经编写好,所以不需要再编写实体类 a.在现有的student_list.html页面创建一个删除按钮,并在Javascript中编写删除方法 该删除是根据ID一个个删除,并非批量删除,因此点击删除按钮的时候会得到该行ID并传给该方法 b.编写子控制器getwaybeans.xml 新加一个关于删除的action c.编写对应的bean类方法 在现有的studentbean类中新建一个删除方法,该方法名为getwaybeans.xml文件中name属性 值得注

JAVAEE——BOS物流项目04:学习计划、datagrid、分页查询、批量删除、修改功能

1 学习计划 1.datagrid使用方法(重要) n 将静态HTML渲染为datagrid样式 n 发送ajax请求获取json数据创建datagrid n 使用easyUI提供的API创建datagrid(掌握) 2.实现取派员分页查询 n 调整页面基于datagrid发送ajax请求 n 创建PageBean封装分页参数 n 定义通用分页查询方法 n 将分页查询结果转为json返回 3.取派员批量删除 n 页面调整 n 服务端实现 4.取派员修改 n 页面调整 n 服务端实现 2 data

Sqlserver数据库中,跨权限执行语句

原文:Sqlserver数据库中,跨权限执行语句 问题来源:最近有同事需要执行批量删除语句.根据他提供的业务需求,推荐他使用"TRUNCATE TABLE"语句.但使用该语句需要 ALTER权限,这与执行用户的角色不符. 解决办法:使用EXECUTE AS语句修改执行权限.代码如下: ALTER PROCEDURE [dbo].[sp_TruncateTable] @TableName varchar(200) WITH EXECUTE AS SELF AS BEGIN --打印出当前

度量快速开发平台网格部件批量删除

我们在构建项目的时候,往往需要构建删除数据的功能,一般来说都是一条数据一条数据的删除,但是有些时候我们可能需要批量删除无用的数据这时候该怎么实现呢?首先我们将网格部件中的显示标识列属性勾选上,如下图所示: 然后在功能管理中构建一个批量删除的功能,如下图所示: 上图中的代码调用了网格部件中的获取标识行方法: 原文地址:http://bbs.delit.cn/thread-697-1-1.html 转载请注明出处; 撰写人:度量科技www.delit.cn

Linux基础 linux系统中的批量删除文件与空文件删除的命令介绍

Linux基础教程  linux系统中的批量删除文件与空文件删除的命令介绍 Linux资料下面删除文件或者目录命令rm(remove): Linux培训功能说明:删除文件或目录. 语 法:rm [-dfirv][--help][--version][文件或目录...] 补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件. 参 数: -d或--directory 直接把欲删除的目录的硬连接数据删成0,删除该目录. -f或--force 强制删除