真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

mybatisbatch如何實現(xiàn)批量提交大量數(shù)據(jù)

小編這次要給大家分享的是mybatis batch如何實現(xiàn)批量提交大量數(shù)據(jù),文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站建設、網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯(lián)網時代的柞水網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

很多人在用 MyBatis 或者 通用 Mapper 時,經常會問有沒有批量插入和批量更新的方法。

實際上許多時候沒必要用 去實現(xiàn)特別復雜的批量操作。直接通過 MyBatis 的 BATCH 方式執(zhí)行增刪改方法即可。

下面是一個批量用法的例子:

在xml文件配置多條參數(shù)同時插入:


   
   select SEQ_CTAS_SHARK_FLT.nextval as recId from dual
  
   insert into CTAS_SHARK_FLT () SELECT SEQ_TEST.NEXTVAL, A.*
   FROM (
   
    select #{item.awbType,jdbcType=VARCHAR}, #{item.awbPre,jdbcType=VARCHAR},... from dual
 
  ) A
 

在Java代碼中,oracle中一次執(zhí)行的sql語句長度是有限制的,如果最后拼出來的sql字符串過長,會導致執(zhí)行失敗,所以java端還要做一個分段處理,參考下面的處理:

List data = new ArrayList();
     for (TSharkFlt f : sharkFlts) {
       data.add(getSharkFlt(f));
     }
 
    System.out.println(data.size());
     long beginTime = System.currentTimeMillis();
    System.out.println("開始插入...");
     SqlSessionFactory sqlSessionFactory 
=ctx.getBean(SqlSessionFactory.class);
     SqlSession session = null;
    try {
       session = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
       int a = 2000;//每次提交2000條
       int loop = (int) Math.ceil(data.size() / (double) a);
 
       List tempList = new ArrayList(a);
      int start, stop;
      for (int i = 0; i < loop; i++) {
        tempList.clear();
        start = i * a;
        stop = Math.min(i * a + a - 1, data.size() - 1);
        System.out.println("range:" + start + " - " + stop);
        for (int j = start; j <= stop; j++) {
           tempList.add(data.get(j));
        }
         session.insert("ctas.importer.writer.mybatis.mappper.SharkFltMapper.insertBatch3", tempList);
        session.commit();
        session.clearCache();
         System.out.println("已經插入" + (stop + 1) + " 條");
       }
     } catch (Exception e) {
       e.printStackTrace();
       session.rollback();
    } finally {
      if (session != null) {
        session.close();
      }
     }
    long endTime = System.currentTimeMillis();
    System.out.println("插入完成,耗時 " + (endTime - beginTime) + " 毫秒!");

看完這篇關于mybatis batch如何實現(xiàn)批量提交大量數(shù)據(jù)的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。


網站題目:mybatisbatch如何實現(xiàn)批量提交大量數(shù)據(jù)
文章網址:http://weahome.cn/article/ggissi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部