国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Mybatis-plus的批量插入真的不能用嗎?

原創(chuàng) 精選
數(shù)據(jù)庫
在很多公司,經(jīng)常聽到“不要用 mybatis-plus 的批量插入,它其實(shí)也是遍歷插入,性能很差的”。真的是這樣嗎?我們不應(yīng)該人云亦云,應(yīng)該自己去探究下。

作者 | 蔡柱梁

審校 | 重樓

前言

在很多公司,經(jīng)常聽到“不要用 mybatis-plus 的批量插入,它其實(shí)也是遍歷插入,性能很差的”。真的是這樣嗎?我們不應(yīng)該人云亦云,應(yīng)該自己去探究下。

我們先針對這個觀點(diǎn)分析下,總結(jié)出來他們的看法大概率是下面的其中一種:

  1. 遍歷插入,反復(fù)創(chuàng)建。這是一個比較重的操作,所以性能很差。
    這里不用看源碼也能知道,因?yàn)檫@個和mybatis-plus沒關(guān)系,而且我們現(xiàn)在使用了SpringBoot,一般也用它的JDBC啟動依賴。連接和連接池不是本章節(jié)的重點(diǎn),就不展開講了,總的來說這觀點(diǎn)是不正確的。
  2. 一條 insert 就一次網(wǎng)絡(luò)IO,數(shù)量多了,這是個很可觀且沒必要的開銷,所以性能差。

走進(jìn)源碼

對這第二個觀點(diǎn),筆者結(jié)合源碼給出自己的觀點(diǎn)。給出筆者的一些相關(guān)配置(使用mybatis-plus的版本是3.5.3.1。

pom.xml如下:

...
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-boot-starter</artifactId>
 <version>3.5.3.1</version>
</dependency>
...

application.yml如下:

Spring:
  # 使用默認(rèn)的連接池庫 
  datasource:
    url: "*****"
    username: "****"
    password: "****"

筆者的Service如下圖:

1 進(jìn)入 saveBatch 看下

com.baomidou.mybatisplus.extension.service.IService#saveBatch(java.util.Collection)

發(fā)現(xiàn)里面會給我們這個批量操作開啟了事務(wù)(如果是期望插入一條就成功一條的,這批量方法就不適用了)并且是有限制提交數(shù)量的,默認(rèn)1000。

2 往里ServiceImpl#saveBatch走

com.baomidou.mybatisplus.extension.service.impl.ServiceImpl#saveBatch

看到了mybatis-plus 的批量插入是一條條插入的,但是這個一次次的遍歷是真的發(fā)送給MySQL了嗎?這里留一個疑問。我們只要記得這里有一個鉤子,后面會回調(diào)回來執(zhí)行

3 SqlHelper#executeBatch(Class<?>, Log, Collection, int, BiConsumer<SqlSession,E>)

com.baomidou.mybatisplus.extension.toolkit.SqlHelper#executeBatch(java.lang.Class<?>, org.apache.ibatis.logging.Log, java.util.Collection, int, java.util.function.BiConsumer<org.apache.ibatis.session.SqlSession,E>)

sqlSession 是從哪里來的呢?我們?nèi)タ聪陆貓D里面的executeBatch。

4 SqlHelper#executeBatch(Class<?> entityClass, Log log, Consumer consumer)

com.baomidou.mybatisplus.extension.toolkit.SqlHelper#executeBatch(java.lang.Class<?>, org.apache.ibatis.logging.Log, java.util.function.Consumer<org.apache.ibatis.session.SqlSession>)

結(jié)合前面的代碼就知道了,我這里是到了1000(默認(rèn)配置1000,并且我批量保存的list超過了1000),就會開啟會話,將內(nèi)存的sql全部刷到MySQL,然后回去繼續(xù)遍歷。

總結(jié)

到這里大家應(yīng)該都清楚的知道了 mybatis-plus 的批量插入雖然是遍歷插入,但是不是一個insert就一次IO,而是打包了一次發(fā)送一批的,所以性能不會有什么太大問題。不過筆者這里不是鼓吹大家都用這個批量插入就好了,實(shí)際工作中會有更多要求,有時這個簡單的批量插入是沒法滿足的。因此,筆者只是提倡可以根據(jù)自己工作實(shí)際情況決定,但是性能方面就不用太過擔(dān)心,mybatis-plus 也有考慮的

擴(kuò)展

如果使用mybatis-plus 3.4+ 版本,并且連接的是 MySQL 8.0 或更高版本的數(shù)據(jù)庫,那么 mybatis-plus將會自動利用MySQL 8.0 的原生批量插入功能來執(zhí)行批量插入操作。

具體實(shí)現(xiàn)的關(guān)鍵是在mybatis-plus的底層使用了mybatis-plus的批量新增方法時,mybatis-plus會將待插入的對象列表傳遞給底層的而

需要注意的是,要確保以下條件滿足才能利用

  1. 使用
  2. 使用兼容
  3. 使用mybatis-plus 3.4+ 版本

作者介紹

蔡柱梁,51CTO社區(qū)編輯,從事Java后端開發(fā)8年,做過傳統(tǒng)項(xiàng)目廣電BOSS系統(tǒng),后投身互聯(lián)網(wǎng)電商,負(fù)責(zé)過訂單,TMS,中間件等。

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2024-11-28 19:03:56

2024-07-31 09:56:20

2021-09-27 07:56:41

MyBatis Plu數(shù)據(jù)庫批量插入

2024-12-20 16:49:15

MyBatis開發(fā)代碼

2022-09-29 10:06:56

SQLMySQL服務(wù)端

2025-02-27 09:45:47

2023-06-07 08:08:37

MybatisSpringBoot

2023-07-29 22:02:06

MyBatis數(shù)據(jù)庫配置

2023-06-14 08:34:18

Mybatis死鎖框架

2023-10-31 08:01:48

Mybatis參數(shù)jdbcurl?

2025-10-28 01:15:00

2025-07-10 09:32:23

2024-02-28 09:35:52

2023-01-12 09:13:49

Mybatis數(shù)據(jù)庫

2012-11-08 16:16:41

Linux開源軟件

2025-05-26 03:20:00

SpringMyBatis數(shù)據(jù)權(quán)限

2025-02-06 07:45:44

2025-11-27 02:00:15

2021-10-18 07:58:33

MyBatis Plu數(shù)據(jù)庫批量插入

2025-02-13 07:59:13

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲一区中文日韩| 一区二区三区av| 中文字幕不卡在线视频极品| 色狠狠av一区二区三区| 国内精品伊人久久久久av一坑| 国产视频一区三区| 99精品美女| 国产精品实拍| 永久免费在线观看| 久久精品久久久久久国产 免费| 国产成人精品免高潮在线观看| 国产精品亚洲аv天堂网| 亚洲大片精品永久免费| 日本欧美一区二区三区| 国产不卡在线播放| 国产亚洲精久久久久久| 国产欧美久久久精品影院| 91看片就是不一样| 国产三级在线免费观看| 久久久久久久久影视| 久久最新网址| 日韩欧美国产片| 91精品成人久久| 欧美高清在线精品一区| 国产香蕉精品| 国产乱xxⅹxx国语对白| 91国在线精品国内播放| 国产精品久久久久久久第一福利| 日韩三级精品| 欧美成人性生活| 本田岬高潮一区二区三区| 97人人做人人爽香蕉精品| 91精品国产91久久久久麻豆 主演| 国产香蕉一区二区三区在线视频 | 日本电影亚洲天堂| 亚洲欧美日韩电影| 日韩一区电影| 大地资源中文在线观看免费版| 国产传媒一区二区| 日韩欧美高清在线| 国产综合色产在线精品| 福利一区和二区| 天堂一区在线观看| 成人国产在线激情| 91.com视频| 国产精品一区三区| av日韩精品| 中文字幕在线影视资源| 精品乱子伦一区二区三区| 亚洲国产小视频在线观看| 成人av午夜电影| 婷婷精品在线| 国产资源在线播放| 一区二区三区四区视频在线观看| 国产午夜精品美女视频明星a级| 欧美国产一区二区在线观看| 老司机精品视频在线播放| 中文字幕一二三区在线观看| 久久99精品久久久久久久久久| 精品无人区乱码1区2区3区在线| 久久久国产精品麻豆| 欧美理论视频| 欧美精品videossex少妇| 日韩中文字幕三区| 国产精选久久久久久| 69av一区二区三区| 99久久免费精品高清特色大片| 日韩精品导航| 精品孕妇一区二区三区| 欧美极品欧美精品欧美| 国产精品九九九| 日韩欧美色综合网站| 久久久久久久国产精品影院| 欧美高清视频在线观看mv| 日本不卡影院| 我要看一级黄色大片| 国产精品一区在线播放| 综合久久给合久久狠狠狠97色| 亚洲视频在线免费| 成人美女视频| 精品剧情v国产在线观看| 欧美精品一区二区三区四区五区| 色偷偷91综合久久噜噜| 欧美日韩精品国产| 高清在线不卡av| 99re66热这里只有精品8| 色戒汤唯在线观看| 高清视频在线www色| 51xx午夜影福利| 成人美女av在线直播| 在线观看久久久久久| 欧美性xxxxx| 91浏览器在线视频| 香蕉亚洲视频| 日韩中文av| 在线播放高清视频www| 两个人看的免费完整在线观看| 日韩视频一二三| 不卡一区二区三区视频| 欧美日韩在线视频一区| 黄色小说综合网站| 91tv官网精品成人亚洲| 国产精品无码久久久久| 高清日韩av电影| www.日本一区| 尤物一区二区三区| 亚洲专区中文字幕| 久久久久久午夜| 亚洲精品大尺度| 天天综合天天做天天综合| www国产成人| 日本中文字幕一区二区有限公司| 欧美久久综合网| 国产精品一区二区精品视频观看 | 成人黄色av电影| 最新亚洲视频| 伊人久久大香线蕉av不卡| 最新日韩三级| 男人的天堂在线视频免费观看| 日本一二区视频| 国产午夜福利视频在线观看| 日本高清一区| 亚洲欧洲日产国码av系列天堂| 精品福利一区二区| 国产欧美精品区一区二区三区 | 麻豆tv免费在线观看| 国产女主播在线| 日本福利视频在线| 亚洲精美视频| 久久66热这里只有精品| 国产精品永久在线| 久久久久久高潮国产精品视| 日韩精品一区二区三区第95| 在线精品视频一区二区三四| 亚洲三级视频在线观看| 9人人澡人人爽人人精品| 久久精品国产99国产精品| 亚洲乱码久久| 欧美在线免费一级片| 成人网18免费网站| 免费看成人吃奶视频在线| 亚洲日本va中文字幕| 国内精品伊人| 日韩欧美看国产| 97天天综合网| 蜜桃传媒在线观看免费进入| p色视频免费在线观看| 在线看视频你懂的| 天堂中文字幕——hd| 91人成在线| 四虎4hu新地址入口2023| 日本老熟妇毛茸茸| 日韩 欧美 高清| 欧美日韩中文在线视频| 国产视频一视频二| 日日摸日日碰夜夜爽无码| 在线观看欧美激情| 波多野结衣三级在线| 日韩一区免费观看| 亚洲欧美成人一区| 尤物国产精品| 中文字幕超清在线免费观看| 亚洲国产精品毛片| 欧美h视频在线观看| 中文字幕第一页亚洲| 日本中文字幕一级片| 成人av在线播放观看| 亚洲精品蜜桃久久久久久| 大桥未久一区二区三区| 国产女主播av| 亚洲 高清 成人 动漫| 日本精品一区二区三区四区| 人妻无码视频一区二区三区| 天堂中文视频在线| 五月天亚洲激情| h七七www色午夜日本| 3dmax动漫人物在线看| 91免费版在线观看| 欧美中文在线| 日本www在线| 九色porny视频在线观看| 日韩漫画puputoon| 欧美2区3区4区| 久久久久久久久免费视频| 第一视频专区在线| 国产激情在线| 少妇视频一区| 在线视频成人| 亚洲免费成人av在线| 99久久精品网站| 国产一区二区三区的电影| 韩国av一区二区| 国产情人综合久久777777| 亚洲免费在线看| 欧美视频中文字幕| 亚洲国模精品一区| 九色精品免费永久在线| 国产精品情侣自拍| 日本一区二区高清视频| 无码专区aaaaaa免费视频|