批處理
應用:
插入/更新/刪除 大量數據時奸绷,建議使用批處理來做
可以提高效率
使用方法:
- statement.addBatch():
添加批處理云矫,先將數據緩存起來- statement.executeBatch():
執(zhí)行批處理- 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<User> 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());
//這行執(zhí)行sql語句代碼遏插,沒循環(huán)一次捂贿,就得執(zhí)行
// preparedStatement.executeUpdate();
//先把數據緩存起來
preparedStatement.addBatch(); //添加批處理
}
//統一一次性執(zhí)行
preparedStatement.executeBatch();//執(zhí)行批處理
//清空批處理
preparedStatement.clearBatch();
//釋放資源
JDBCUtils.close(conn,preparedStatement);
}
}
那么,本人現在來展示下運行后生成的表內容:
運行后 user表
看了上述的代碼胳嘲,相信同學們也發(fā)現了:
批處理運用了緩沖區(qū)的思想
那么厂僧,本篇博文的知識點在這里就講解完畢了。
(請觀看本人博文 —— 《JDBC 專欄總集篇》)