基于mybatis batch实现批量提交大量数据
很多人在用MyBatis或者通用Mapper时,经常会问有没有批量插入和批量更新的方法。
实际上许多时候没必要用
下面是一个批量用法的例子:
在xml文件配置多条参数同时插入:
selectSEQ_CTAS_SHARK_FLT.nextvalasrecIdfromdual insertintoCTAS_SHARK_FLT( )SELECTSEQ_TEST.NEXTVAL,A.* FROM( select#{item.awbType,jdbcType=VARCHAR},#{item.awbPre,jdbcType=VARCHAR},...fromdual )A
在Java代码中,oracle中一次执行的sql语句长度是有限制的,如果最后拼出来的sql字符串过长,会导致执行失败,所以java端还要做一个分段处理,参考下面的处理:
Listdata=newArrayList (); for(TSharkFltf:sharkFlts){ data.add(getSharkFlt(f)); } System.out.println(data.size()); longbeginTime=System.currentTimeMillis(); System.out.println("开始插入..."); SqlSessionFactorysqlSessionFactory =ctx.getBean(SqlSessionFactory.class); SqlSessionsession=null; try{ session=sqlSessionFactory.openSession(ExecutorType.BATCH,false); inta=2000;//每次提交2000条 intloop=(int)Math.ceil(data.size()/(double)a); List tempList=newArrayList (a); intstart,stop; for(inti=0;i 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。