【JDBC】批處理

批處理

應(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 專欄總集篇》)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容