A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王超举 初级黑马   /  2017-9-10 20:00  /  718 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

对于大批量插入数据库中数据,使用jdbc的批量处理使用简介先来个简单的,供大家好理解。

[Java] 纯文本查看 复制代码
	@Test
	//批量插入数据库
	public void Demo1() throws Exception{
		String sql1 = "insert into user values('1','a1')  ";
	    String sql2 = "insert into user values('2','a2')  ";
	    String sql3 = "insert into user values('3','a3')  ";
	    String sql4 = "insert into user values('4','a4')  ";
	    Connection conn = JDBCUtils.getConnection();
	    PreparedStatement pstmt = conn.prepareStatement(sql1);
	    pstmt.addBatch();
	    pstmt.addBatch(sql2);
	    pstmt.addBatch(sql3);
	    pstmt.addBatch(sql4);
	    pstmt.executeBatch();
	}

为了大家更好的理解上面的代码,附图一张,可以查看附件。
下面将重复代码放入循环中,以优化代码写法。
[Java] 纯文本查看 复制代码
@Test
	//批量插入数据库,循环方式
	public void Demo2() throws Exception{ 
		Connection conn = JDBCUtils.getConnection();
		PreparedStatement ps = null;
		int len = 8;
		for(int i=0; i<len; i++) {
			String sql = "insert into user value("+i+",'aa')";
			ps = conn.prepareStatement(sql);
	        //优化插入  等一定量后再一起插入。
	        ps.addBatch(); 
	    }
         ps.executeBatch();  
         //优化插入提交,批量插入数据库中。
         ps.clearBatch();        //提交后,Batch清空。
	}

理解上面的代码后,我们来看如果插入1000条数据,可以每10条批量插入一次,并且sql语句也可以做设置参数的处理,代码如下
[Java] 纯文本查看 复制代码
@Test
	//批量添加,并设置参数
	public void Demo6() throws Exception{ 
		Connection conn = JDBCUtils.getConnection();
		String sql = "insert into user values(?,?)";
		PreparedStatement ps = conn.prepareStatement(sql);
		int len = 10;
		for(int i=0; i<1000; i++) {
			ps.setInt(1, i);
			ps.setString(2, "a"+i);
			//优化插入        插入代码打包,等一定量后再一起插入。
			ps.addBatch(); 
			//每len = 10次提交一次 
			if((i!=0 && i%len==0) || i==len-1){//可以设置不同的大小;如50,100,200,500,1000等等  
				ps.executeBatch();  
				//优化插入第三步       提交,批量插入数据库中。
				ps.clearBatch();        //提交后,Batch清空。
			}
		}
		
	}


批量插入.png (101.69 KB, 下载次数: 6)

批量插入.png

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马