ibatis批量导入mysql数据库

1 篇文章 0 订阅

工作中需要批量导入excel数据到mysql数据库中

excel数据量比较大,一次大概导入1万多条

用传统的for循环导入mysql数据库的话,非常耗时,大概3分钟左右

所有就需要用到批处理,核心算法如下

 /**
		* 批量插入功能
		*/
	   @SuppressWarnings("unchecked")
	   public void insertBatch(final List<WinddataBo> list) {
		   SqlMapClient sqlMapClientTemplate = baseDao.getSqlMapClient();
		   try {
			   sqlMapClientTemplate.startTransaction();//开启事务
			   /**事务todo start***/
			   /**先执行删除所有**/
			   sqlMapClientTemplate.delete("com.zero2ipo.ylcf.winddata.deleteAll");
			   sqlMapClientTemplate.insert("com.zero2ipo.ylcf.winddata.insertBatch",list);
			   /**事务todo end***/
			   sqlMapClientTemplate.commitTransaction();//提交事务
		   } catch (SQLException e) {
			   e.printStackTrace();
		   }finally {
			   try {
				   sqlMapClientTemplate.endTransaction();//事务完成
			   } catch (SQLException e) {
				   try {
					   sqlMapClientTemplate.getCurrentConnection().rollback();	//事务回滚
				   } catch (SQLException e1) {
					   e1.printStackTrace();
				   }
				   e.printStackTrace();
			   }
		   }

	   }

   ibatis sql文件如下

<!--批量插入-->
<insert  id ="com.zero2ipo.ylcf.winddata.insertBatch"  parameterClass ="java.util.List">
   <![CDATA[
        insert into winddata(CRETE_DATE , SHOUPANJIA , COLUMN1,COLUMN2 ) values
    ]]>
	<iterate  conjunction ="," >
	<![CDATA[
            (#list[].creteDate#,#list[].shoupanjia#,#list[].column1#,#list[].column2#)
        ]]>
	</iterate >
</insert >

 

   

   1次导入excel1万多条数据,耗时大概3秒钟

 

   部分效果图



 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值