本文共 3104 字,大约阅读时间需要 10 分钟。
下面有两个方法:ct1方法是标准的处理模式,ct2方法是批处理的模式。
最终显示:批处理模式的速度比一般处理模式块的很多,在实际开发中,一个表的字段越多,一般二三十个很常见,SQL语句越复杂,越能体现出批处理的速度之快!
package com.wei.employee.common;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.Date;/** * 批处理模式 和一般处理模式下 比较之下 看谁的执行效率快 */public class BatchSample { //标注模式下的处理模式 public static void tc1(){ Connection con=null; PreparedStatement pstmt=null; try { long statrTime=new Date().getTime(); con = DbUtils.getConnection(); //JDBC默认使用自动提交的模式 con.setAutoCommit(false);//关闭自动提交模式 String sql="insert into employee(eno,ename,salary,dname)values(?,?,?,?)"; for (int i = 100000; i < 200000; i++) {// if (i==1005){// throw new Exception("插入失败");// } pstmt = con.prepareStatement(sql); pstmt.setInt(1,i); pstmt.setString(2,"员工"+i); pstmt.setFloat(3,40000f); pstmt.setString(4,"研发部"); pstmt.executeUpdate(); } con.commit();//提交数据 long endTime=new Date().getTime(); System.out.println("tc1方法的执行总时长:"+(endTime-statrTime)); } catch (Exception e) { e.printStackTrace(); try { if (con!=null&&!con.isClosed()){ con.rollback();//回滚数据 } } catch (SQLException throwables) { throwables.printStackTrace(); } }finally { DbUtils.closeConnection(null,pstmt,con); } } //批处理模式下执行的的时间 public static void tc2(){ Connection con=null; PreparedStatement pstmt=null; try { long statrTime=new Date().getTime(); con = DbUtils.getConnection(); //JDBC默认使用自动提交的模式 con.setAutoCommit(false);//关闭自动提交模式 String sql="insert into employee(eno,ename,salary,dname)values(?,?,?,?)"; pstmt = con.prepareStatement(sql); for (int i = 200000; i < 300000; i++) {// if (i==1005){// throw new Exception("插入失败");// } pstmt.setInt(1,i); pstmt.setString(2,"员工"+i); pstmt.setFloat(3,40000f); pstmt.setString(4,"研发部"); pstmt.addBatch();//将刚才设置的参数加入批处理的任务中// pstmt.executeUpdate(); } pstmt.executeBatch();//执行批处理任务 con.commit();//提交数据 long endTime=new Date().getTime(); System.out.println("tc2方法的执行总时长:"+(endTime-statrTime)); } catch (Exception e) { e.printStackTrace(); try { if (con!=null&&!con.isClosed()){ con.rollback();//回滚数据 } } catch (SQLException throwables) { throwables.printStackTrace(); } }finally { DbUtils.closeConnection(null,pstmt,con); } } public static void main(String[] args) { tc1(); tc2(); }}
运行截图:
转载地址:http://ujooz.baihongyu.com/