最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于mybatis batch實現(xiàn)批量提交大量數(shù)據(jù)

 更新時間:2020年05月30日 11:27:57   作者:隨風而逝,只是飄零  
這篇文章主要介紹了基于mybatis batch實現(xiàn)批量提交大量數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

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

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

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

<insert id="insertBatch2" parameterType="ctas.entity.SharkFlt">
   <selectKey keyProperty="recId" order="BEFORE" resultType="Long">
   select SEQ_CTAS_SHARK_FLT.nextval as recId from dual
  </selectKey>
   insert into CTAS_SHARK_FLT (<include refid="Base_Column_List"/>) SELECT SEQ_TEST.NEXTVAL, A.*
   FROM (
   <foreach collection="list" item="item" index="index" open="" close="" separator="union all">
    select #{item.awbType,jdbcType=VARCHAR}, #{item.awbPre,jdbcType=VARCHAR},... from dual
 </foreach>
  ) A
 </insert>

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

List<SharkFlt> data = new ArrayList<SharkFlt>();
     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<SharkFlt> tempList = new ArrayList<SharkFlt>(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.insertBatch2", 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) + " 毫秒!");

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 使用Maven打包時包含資源文件和源碼到jar的方法

    使用Maven打包時包含資源文件和源碼到jar的方法

    這篇文章主要介紹了使用Maven打包時包含資源文件和源碼到jar的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 詳解如何為SpringBoot Web應用的日志方便追蹤

    詳解如何為SpringBoot Web應用的日志方便追蹤

    在Web應用程序領域,有效的請求監(jiān)控和可追溯性對于維護系統(tǒng)完整性和診斷問題至關重要,SpringBoot是一種用于構建Java應用程序的流行框架,在本文中,我們探討了在SpringBoot中向日志添加唯一ID的重要性,需要的朋友可以參考下
    2023-11-11
  • RabbitMQ實現(xiàn)消息可靠性傳遞過程講解

    RabbitMQ實現(xiàn)消息可靠性傳遞過程講解

    消息的可靠性傳遞是指保證消息百分百發(fā)送到消息隊列中去,這篇文章主要介紹了RabbitMQ實現(xiàn)消息可靠性傳遞過程,感興趣想要詳細了解可以參考下文
    2023-05-05
  • ZooKeeper入門教程三分布式鎖實現(xiàn)及完整運行源碼

    ZooKeeper入門教程三分布式鎖實現(xiàn)及完整運行源碼

    本文是ZooKeeper入門系列教程,分布式鎖有多種實現(xiàn)方式,比如通過數(shù)據(jù)庫、redis都可實現(xiàn)。作為分布式協(xié)同工具ZooKeeper,當然也有著標準的實現(xiàn)方式。本文介紹在zookeeper中如何實現(xiàn)排他鎖
    2022-01-01
  • Java零基礎入門數(shù)組

    Java零基礎入門數(shù)組

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結構之一,當然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-04-04
  • Spring Boot 整合 Mockito提升Java單元測試的高效實踐案例

    Spring Boot 整合 Mockito提升Java單元測試的高效實踐案例

    Mockito與Spring Boot的整合為Java開發(fā)者提供了一套完整的解決方案,使得單元測試更為精準、高效,從而確保了代碼質量、降低了維護成本,并促進了項目的持續(xù)集成與交付,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • Java中的Null到底是什么

    Java中的Null到底是什么

    null是沒有地址,""是有地址但是里面的內容是空的,好比做飯 null說明連鍋都沒有 而""則是有鍋沒米,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,下面我們來詳細學習一下它吧
    2019-06-06
  • 深入理解可視化JVM 故障處理工具

    深入理解可視化JVM 故障處理工具

    這篇文章主要介紹了深入理解可視化JVM 故障處理工具,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 詳解用Spring Boot零配置快速創(chuàng)建web項目

    詳解用Spring Boot零配置快速創(chuàng)建web項目

    本篇文章主要介紹了詳解用Spring Boot零配置快速創(chuàng)建web項目,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 深入解析System.load 與 System.loadLibrary

    深入解析System.load 與 System.loadLibrary

    以下是對System.load與System.loadLibrary進行了詳細的分析介紹。需要的朋友可以過來參考下
    2013-08-08

最新評論

司法| 隆子县| 汉阴县| 高密市| 报价| 江阴市| 青神县| 高雄县| 内黄县| 廉江市| 长宁县| 江津市| 邮箱| 鹤岗市| 新巴尔虎左旗| 长岭县| 桓台县| 新郑市| 洛阳市| 古田县| 通河县| 启东市| 福海县| 洛隆县| 荣成市| 灵璧县| 区。| 绥德县| 文化| 广州市| 肥东县| 东乌珠穆沁旗| 太湖县| 通渭县| 伊吾县| 姚安县| 济阳县| 吉林市| 青川县| 河北区| 临澧县|