zoukankan      html  css  js  c++  java
  • JDBC的批处理操作

    1.1 JDBC的批处理操作

    1.1.1 什么是批处理

    之前进行JDBC的操作的时候,都是一条SQL语句执行。现在如果使用批处理,可以将一批SQL一起执行。

    1.1.2 批处理基本使用

    package com.xdr630.jdbc.demo6;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.Statement;
    
    import org.junit.Test;
    
    import com.xdr630.jdbc.utils.JDBCUtils;
    
    /**
     * 批处理的操作
     * @author xdr
     *
     */
    public class JDBCDemo6 {
    	
    
    	@Test
    	/**
    	 * 批处理基本操作
    	 */
    	public void demo1(){
    		Connection conn = null;
    		Statement stmt = null;
    		try{
    			// 获得连接:
    			conn = JDBCUtils.getConnection();
    			// 创建执行批处理对象:
    			stmt = conn.createStatement();
    			// 编写一批SQL语句:
    			String sql1 = "create database test1";
    			String sql2 = "use test1";
    			String sql3 = "create table user(id int primary key auto_increment,name varchar(20))";
    			String sql4 = "insert into user values (null,'aaa')";
    			String sql5 = "insert into user values (null,'bbb')";
    			String sql6 = "insert into user values (null,'ccc')";
    			String sql7 = "update user set name = 'mmm' where id = 2";
    			String sql8 = "delete from user where id = 1";
    			// 添加到批处理
    			stmt.addBatch(sql1);
    			stmt.addBatch(sql2);
    			stmt.addBatch(sql3);
    			stmt.addBatch(sql4);
    			stmt.addBatch(sql5);
    			stmt.addBatch(sql6);
    			stmt.addBatch(sql7);
    			stmt.addBatch(sql8);
    			// 执行批处理:
    			stmt.executeBatch();
    		}catch(Exception e){
    			e.printStackTrace();
    		}finally{
    			JDBCUtils.release(stmt, conn);
    		}
    	}
    }
    
    • 执行后的结果
      在这里插入图片描述

    1.1.3 批量插入(使用PreparedStatement)

    @Test
    	/**
    	 * 批量插入记录:
    	 * * 默认情况下MySQL批处理没有开启的,需要在url后面拼接一个参数即可。
    	 */
    	public void demo2(){
    		// 记录开始时间:
    		long begin = System.currentTimeMillis();
    		Connection conn = null;
    		PreparedStatement pstmt = null;
    		try{
    			// 获得连接:
    			conn = JDBCUtils.getConnection();
    			// 编写SQL语句:
    			String sql = "insert into user values (null,?)";
    			// 预编译SQL:
    			pstmt = conn.prepareStatement(sql);
    			for(int i=1;i<=10000;i++){
    				pstmt.setString(1, "name"+i);
    				// 添加到批处理
    				pstmt.addBatch();
    				// 注意问题:
    				// 执行批处理
    				if(i % 1000 == 0){
    					// 执行批处理:
    					pstmt.executeBatch();
    					// 清空批处理:
    					pstmt.clearBatch();
    				}
    			}
    		}catch(Exception e){
    			e.printStackTrace();
    		}finally{
    			JDBCUtils.release(pstmt, conn);
    		}
    		long end = System.currentTimeMillis();
    		System.out.println((end-begin));
    	}
    
    • 修改db.properties配置
    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql:///test1?rewriteBatchedStatements=true
    username=root
    password=1234
    
    • 执行完成后就会插入一万条记录
      在这里插入图片描述

    本文来自博客园,作者:兮动人,转载请注明原文链接:https://www.cnblogs.com/xdr630/p/15254867.html

  • 相关阅读:
    IO编程__字节流__输入
    IO编程__文件夹处理__显示文件夹下所有文件名称
    IO编程__文本文件处理
    IO编程__文件对象
    画坦克__线程__V2__第二种方式调用
    画坦克__线程__V1__第一种方法创造线程
    画坦克__敌人坦克
    画坦克__坦克可移动
    【自动化__GUI自动化】__java__selenium__断言__表格标题内容断言
    选项框
  • 原文地址:https://www.cnblogs.com/xdr630/p/15254867.html
Copyright © 2011-2022 走看看