批處理
應(yīng)用:
插入/更新/刪除 大量數(shù)據(jù)時(shí),建議使用批處理來(lái)做
可以提高效率
使用方法:
- statement.addBatch():
添加批處理,先將數(shù)據(jù)緩存起來(lái)- statement.executeBatch():
執(zhí)行批處理- statement.clearBatch():
清空緩存
那么,本人現(xiàn)在來(lái)通過(guò)一個(gè)例子來(lái)展示下批處理的使用:
假設(shè)本人現(xiàn)在要求向dbstudy數(shù)據(jù)庫(kù)的users表中插入100條信息
(user編號(hào)從1開(kāi)始計(jì)數(shù),名稱都暫且用“用戶”代替)

user空表
本人再來(lái)給出響應(yīng)的存儲(chǔ)用戶信息的User類(lèi):
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 + '\'' +
'}';
}
}
那么,本人來(lái)給出使用批處理解決問(wèn)題的代碼:
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 {
//批處理
//模擬一些數(shù)據(jù)
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個(gè)用戶插入到數(shù)據(jù)庫(kù)中
Connection conn = JDBCUtils.getConnection();
//獲取操作對(duì)象
String sql="insert into user values(?,?)";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
//當(dāng)你插入大量數(shù)據(jù)時(shí),建議你使用批出來(lái)
for (User user : list) {
preparedStatement.setString(1,user.getId());
preparedStatement.setString(2,user.getName());
//這行執(zhí)行sql語(yǔ)句代碼,沒(méi)循環(huán)一次,就得執(zhí)行
// preparedStatement.executeUpdate();
//先把數(shù)據(jù)緩存起來(lái)
preparedStatement.addBatch(); //添加批處理
}
//統(tǒng)一一次性執(zhí)行
preparedStatement.executeBatch();//執(zhí)行批處理
//清空批處理
preparedStatement.clearBatch();
//釋放資源
JDBCUtils.close(conn,preparedStatement);
}
}
那么,本人現(xiàn)在來(lái)展示下運(yùn)行后生成的表內(nèi)容:

運(yùn)行后 user表
看了上述的代碼,相信同學(xué)們也發(fā)現(xiàn)了:
批處理運(yùn)用了緩沖區(qū)的思想
那么,本篇博文的知識(shí)點(diǎn)在這里就講解完畢了。
(請(qǐng)觀看本人博文 —— 《JDBC 專欄總集篇》)