栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JDBC笔记07批处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JDBC笔记07批处理

批处理
基本介绍:
1.当需要成批插入或者更新记录时。 可以采用Java的批量更新机制,这一机制允
许多条语句一次性提交给数据库批量处理。通常情况下比单独提交处理更有效率。
2.JDBC的批量处理语句包括下面方法:

addBatch();添加需要批量处理的SQL语句或参数
executeBatch();执行批量处理语句
clearBatch();清空批处理包的语句
3. JDBC连接MySQL时, 如果要使用批处理功能,请再url中加参数:

?rewririteBatchedStatements = true


4.批处理往往和PreparedStatement一起搭配使用,可以既减少编译次数,又减
少运行次数,效率大大提高

 传统处理与批处理代码比较:

import com.JDBC.utils.JDBCUtils;
import org.junit.Test;

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

public class Batch {
    @Test
    public void noBatch() throws SQLException {
    String sql="insert into dog values(?,?)";
    Connection connection = JDBCUtils.getConnection();
    PreparedStatement preparedStatement =connection.prepareStatement(sql);

        System.out.println("开始执行了");
        long start =System.currentTimeMillis();
        for (int i=0;i<5000;i++){
            preparedStatement.setInt(1,i);
            preparedStatement.setString(2,"songdog"+i);
            preparedStatement.executeUpdate();
        }
        long end = System.currentTimeMillis();
        System.out.println("结束共耗时:"+(end-start));//耗时:18927ms
        JDBCUtils.close(null,connection,preparedStatement);
    }
    @Test
    public void Batch() throws SQLException {
        String sql="insert into dog values(?,?)";
        Connection connection = JDBCUtils.getConnection();
        PreparedStatement preparedStatement =connection.prepareStatement(sql);

        System.out.println("开始执行了");
        long start =System.currentTimeMillis();
        for (int i=0;i<5000;i++){
            preparedStatement.setInt(1,i);
            preparedStatement.setString(2,"songdog"+i);
            preparedStatement.addBatch();//将sql语句加入到批处理包中
            //装满1000条执行
            if((i+1)%1000==0){
                preparedStatement.executeBatch();
                preparedStatement.clearBatch();//清空掉记录,方便下次装载
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("批处理结束共耗时:"+(end-start));//耗时:87ms
        JDBCUtils.close(null,connection,preparedStatement);
    }
}

addBatch()源码分析:

   //addBatch()的源码分析
            

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/872745.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号