<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          太火了!MyBatis Plus 為啥這么牛?

          共 3005字,需瀏覽 7分鐘

           ·

          2020-11-07 02:17

          來(lái)源:cnblogs.com/thinkYi/p/13723035.html

          • 特色
          • 正文
            • 組件依賴(lài)
            • 擴(kuò)展代碼

          大家有用過(guò)MyBatis-Plus(簡(jiǎn)稱(chēng)MP)的都知道它是一個(gè)MyBatis的增強(qiáng)工具,致力于MyBatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā),提高效率而生。

          特色

          • 無(wú)侵入:只做增強(qiáng)不做改變,約會(huì)它不會(huì)對(duì)現(xiàn)有工程產(chǎn)生影響,如絲般順滑
          • 損耗?。?jiǎn)?dòng)即會(huì)自動(dòng)注入基本CURD,性能基本無(wú)損耗,直接面向?qū)ο蟛僮?/span>
          • 強(qiáng)大的CRUD操作:內(nèi)置通用Mapper,通用服務(wù),僅通過(guò)少量配置即可實(shí)現(xiàn)單表大部分CRUD操作,足以強(qiáng)大的條件構(gòu)造器,滿足各種使用需求
          • 支持Lambda形式調(diào)用:通過(guò)Lambda表達(dá)式,方便的編寫(xiě)分類(lèi)查詢條件,無(wú)需再擔(dān)心替換寫(xiě)錯(cuò)
          • 支持主鍵自動(dòng)生成:支持多達(dá)4種主鍵策略(內(nèi)部含分布式唯一ID生成器-序列),可自由配置,完美解決主鍵問(wèn)題
          • 支持ActiveRecord模式:支持ActiveRecord形式調(diào)用,實(shí)體類(lèi)只需繼承Model類(lèi)即可進(jìn)行強(qiáng)大的CRUD操作
          • 支持自定義通用通用操作:支持通用通用方法注入(寫(xiě)一次,可在任何地方使用)
          • 內(nèi)置代碼生成器:采用代碼或Maven插件可快速生成Mapper,Model,Service,Controller層代碼,支持模板引擎,甚至超多自定義配置等您來(lái)使用
          • 內(nèi)置分頁(yè)插件:基于MyBatis物理分頁(yè),開(kāi)發(fā)者無(wú)需關(guān)心特定操作,配置好插件之后,寫(xiě)分頁(yè)等同于普通列表查詢
          • 分頁(yè)插件支持多種數(shù)據(jù)庫(kù):支持MySQL,MariaDB,Oracle,DB2,H2,HSQL,SQLite,Postgre,SQLServer等多種數(shù)據(jù)庫(kù)
          • 內(nèi)置性能分析插件:可輸出Sql語(yǔ)句以及其執(zhí)行時(shí)間,建議開(kāi)發(fā)測(cè)試時(shí)啟用該功能,能快速揪出慢查詢
          • 內(nèi)置的攔截插件:提供全表delete,update操作智能分析中斷,也可自定義攔截規(guī)則,預(yù)防誤操作

          正文

          在實(shí)際項(xiàng)目開(kāi)發(fā)中,我們常常有把數(shù)據(jù)批量保存到數(shù)據(jù)庫(kù)的需求,大家還是多或少的用mybatis-plus實(shí)現(xiàn)過(guò)吧?

          組件依賴(lài)

          首先我們要通過(guò)Maven?mybatis-plus開(kāi)源組件,在pom.xml文件中加入以下代碼:


          <dependency>
          ????<groupId>com.baomidougroupId>
          ????<artifactId>mybatis-plus-boot-starterartifactId>
          ????<version>3.4.0version>
          dependency>

          <dependency>
          ????<groupId>com.baomidougroupId>
          ????<artifactId>mybatis-plus-extensionartifactId>
          ????<version>3.4.0version>
          dependency>

          通過(guò)查看原始碼發(fā)現(xiàn)API接口提供的批量插入的接口:

          啟動(dòng)服務(wù)后,用Postman調(diào)試,后臺(tái)打印如下:

          從圖上可以拋光這個(gè)所謂的批量插入接口,其實(shí)就是一個(gè)用于循環(huán)插入,哦,我的天!

          難不成要手工實(shí)現(xiàn),這樣,

          INSERT?INTO?test?(a,?b,?c)?VALUES
          ="list"?item="item"?separator=",">
          ????(#{item.a},?#{item.b},?#{item.c})

          我們閱讀mybatis-plus的源碼,在

          com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn包中其實(shí)是有很多插入代碼實(shí)現(xiàn)的,這里我就不貼標(biāo)簽了,大家自行跟蹤一下。我們來(lái)手工擴(kuò)展一下:

          關(guān)注公眾號(hào) Java后端編程,回復(fù) Java 獲取最新的學(xué)習(xí)視頻教程。

          擴(kuò)展代碼

          說(shuō)話便宜,給我看看代碼。先展示代碼。再帶大家慢慢解釋為什么這樣實(shí)現(xiàn):

          在MybatisPlusConfig文件中注入該Bean,代碼如下:

          @Configuration
          public?class?MybatisPlusConfig?{

          ????/**
          ?????*?分頁(yè)插件
          ?????*
          ?????*?@return?PaginationInterceptor
          ?????*/

          ????@Bean
          ????public?PaginationInterceptor?paginationInterceptor()?{
          ????????return?new?PaginationInterceptor();
          ????}

          ????@Bean
          ????public?EasySqlInjector?easySqlInjector()?{
          ????????return?new?EasySqlInjector();
          ????}
          }

          還要擴(kuò)展一下自帶的BaseMapper,代碼如下:

          import?com.baomidou.mybatisplus.core.mapper.BaseMapper;

          import?java.util.Collection;

          /**
          ?*?擴(kuò)展通用?Mapper,支持?jǐn)?shù)據(jù)批量插入
          ?*
          ?*?@author?天開(kāi)易想
          ?*/

          public?interface?EasyBaseMapper<T>?extends?BaseMapper<T>?{

          ????/**
          ?????*?批量插入?僅適用于mysql
          ?????*
          ?????*?@param?entityList?實(shí)體列表
          ?????*?@return?影響行數(shù)
          ?????*/

          ????Integer?insertBatchSomeColumn(Collection?entityList);
          }

          我們即可在業(yè)務(wù)類(lèi)中,實(shí)現(xiàn)以下的引用了,代碼如下:

          /**
          ?*?定義業(yè)務(wù)mapper接口,繼承剛剛擴(kuò)展的EasyBaseMapper
          ?*
          ?*?@author?天開(kāi)易想
          ?*/

          @Mapper
          public?interface?TestMapper?extends?EasyBaseMapper<Test>?{
          }

          /**
          ?*?業(yè)務(wù)實(shí)現(xiàn)類(lèi)接口,即可引用
          ?*
          ?*?@author?天開(kāi)易想
          ?*/

          @Service
          public?class?TestServiceImpl?extends?ServiceImpl<TestMapper,?Test>?implements?TestService?{

          ????@Override
          ????public?Integer?testBatch(Collection?testList)?{
          ????????return?baseMapper.insertBatchSomeColumn(testList);
          ????}

          因?yàn)樵贐aseMapper中是不能拿來(lái)直接引用的,為什么不能直接引用,所謂的只是支持MySql數(shù)據(jù)庫(kù),所以作者沒(méi)有內(nèi)置的原因吧!

          到這里,我們的批量插入功能就大功告成,各位程序猿大佬,有沒(méi)有啥疑問(wèn)的,我們來(lái)互相交流!

          - END -

          長(zhǎng)按進(jìn)入小程序,進(jìn)行30天打卡


          打卡第15期,20本新書(shū),快來(lái)看看!


          (更多精彩值得期待……)

          最近熱文:
          20套Java實(shí)戰(zhàn)項(xiàng)目視頻,涉及SpringBoot、SSM、SpringCloud等等!
          卸載Notepad++!事實(shí)已證明,它更牛逼……
          順藤摸瓜揭開(kāi)了移動(dòng)支付的漏洞!
          微信運(yùn)動(dòng)一鍵刷步數(shù),讓你重回排行榜第一
          LeetCode1-80題匯總,速度收藏!

          2T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,人工智能,考研,軟考,英語(yǔ),等等。在公眾號(hào)內(nèi)回復(fù)「資源」,即可免費(fèi)獲取!回復(fù)「社群」,可以邀請(qǐng)你加入讀者群!回復(fù)「抽獎(jiǎng)」,可以參與小米手機(jī)抽獎(jiǎng)!

          點(diǎn)個(gè)在看少個(gè) bug??

          瀏覽 64
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美setu | 区三区日本在线观看视频 | 日本高潮视频 | 日屄视频网| 亚洲中文字幕无码视频在线观看 |