【JDBC】批处理

批处理

应用

插入/更新/删除 大量数据时,建议使用批处理来做
可以提高效率

使用方法

  • statement.addBatch():
    添加批处理,先将数据缓存起来
  • statement.executeBatch():
    执行批处理
  • statement.clearBatch():
    清空缓存

那么,本人现在来通过一个例子来展示下批处理的使用:
假设本人现在要求向dbstudy数据库的users表中插入100条信息
(user编号从1开始计数,名称都暂且用“用户”代替)

user空表

本人再来给出响应的存储用户信息的User类:

package edu.youzg.about_jdbc.model;

public class User {
    private String id;
    private String name;

    public User() {
    }

    public User(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setNumber(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                '}';
    }

}

那么,本人来给出使用批处理解决问题的代码:

package edu.youzg.about_jdbc.core;

import edu.youzg.about_jdbc.model.User;
import edu.youzg.about_jdbc.utils.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;

public class BatchProcess {

    public static void main(String[] args) throws SQLException {
        //批处理
        //模拟一些数据
        ArrayList list = new ArrayList<>();
        for (int i = 1; i < 100; i++) {
            User user = new User((1000 + i + "").substring(1), "user" + i);
            list.add(user);
        }
        //把集合中的1000个用户插入到数据库中
        Connection conn = JDBCUtils.getConnection();
        //获取操作对象
        String sql="insert into user values(?,?)";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        //当你插入大量数据时,建议你使用批出来
        for (User user : list) {
            preparedStatement.setString(1,user.getId());
            preparedStatement.setString(2,user.getName());
            //这行执行sql语句代码,没循环一次,就得执行
            // preparedStatement.executeUpdate();
            //先把数据缓存起来
            preparedStatement.addBatch(); //添加批处理
        }
        //统一一次性执行
        preparedStatement.executeBatch();//执行批处理
        //清空批处理
        preparedStatement.clearBatch();
        //释放资源
        JDBCUtils.close(conn,preparedStatement);
    }

}

那么,本人现在来展示下运行后生成的表内容:

运行后 user表

看了上述的代码,相信同学们也发现了:
批处理运用了缓冲区的思想


那么,本篇博文的知识点在这里就讲解完毕了。
(请观看本人博文 —— 《JDBC 专栏总集篇》)

你可能感兴趣的:(【JDBC】批处理)