• 关于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++) {//循环行数,决定SQL语句执行的次数
    params[i] = new Object[]{ids[i]};//给低维也就是列数“?”赋值,每行只给一列赋值,决定每条SQL语句的参数个数
    }
    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

  • 相关阅读:
    axure rp8.0 序列号,亲测可以用
    纯html页面之间传参
    js下载项目中的文件
    Java获取用户ip
    阿里云部署多个tomcat
    少小有才国家用,老大空长做何为
    获取 web 服务器 port
    知识的迁移和学习能力才是最重要的
    eclipse 安装和使用AmaterasUML
    Eclipse中tomcat更改部署路径 deply path
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/7875707.html
Copyright © 2020-2023  润新知