激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 給你的MyBatis-Plus裝上批量插入的翅膀(推薦)

給你的MyBatis-Plus裝上批量插入的翅膀(推薦)

2022-01-17 12:09thinkYi Java教程

這篇文章主要介紹了給你的MyBatis-Plus裝上批量插入的翅膀,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

各位好,我是易哥(thinkYi).

大家有用過MyBatis-Plus(簡稱MP)的都知道它是一個MyBatis的增強工具,旨在MyBatis的基礎上只做增強不做改變,為簡化開發、提高效率而生.

特點

  • 無侵入:只做增強不做改變,引入它不會對現有工程產生影響,如絲般順滑
  • 損耗小:啟動即會自動注入基本 CURD,性能基本無損耗,直接面向對象操作
  • 強大的 CRUD 操作:內置通用 Mapper、通用 Service,僅僅通過少量配置即可實現單表大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求
  • 支持 Lambda 形式調用:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔心字段寫錯
  • 支持主鍵自動生成:支持多達 4 種主鍵策略(內含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式調用,實體類只需繼承 Model 類即可進行強大的 CRUD 操作
  • 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 內置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用
  • 內置分頁插件:基于 MyBatis 物理分頁,開發者無需關心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢
  • 分頁插件支持多種數據庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種數據庫
  • 內置性能分析插件:可輸出 Sql 語句以及其執行時間,建議開發測試時啟用該功能,能快速揪出慢查詢
  • 內置全局攔截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規則,預防誤操作

正文

在實際項目開發中,我們常常有把數據批量保存到數據庫的需求,大家或多或少的用mybatis-plus實現過吧?

組件依賴

首先我們要通過Maven引入mybatis-plus 開源組件,在pom.xml文件加入下面的代碼:

<!--mybatis-->
<dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-boot-starter</artifactId>
 <version>3.4.0</version>
</dependency>
<!--mybatis plus extension,包含了mybatis plus core-->
<dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-extension</artifactId>
 <version>3.4.0</version>
</dependency>

通過查看源碼發現API接口提供的批量插入的接口:

給你的MyBatis-Plus裝上批量插入的翅膀(推薦)

啟動服務后,用Postman調試,后臺打印如下:

給你的MyBatis-Plus裝上批量插入的翅膀(推薦)

從圖上可以看出這個所謂的批量插入接口,其實就是一個for循環插入,Oh,My God!簡直就是噩夢一般.

給你的MyBatis-Plus裝上批量插入的翅膀(推薦)

難不成要手工實現,這樣,

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

我們閱讀mybatis-plus的源碼,在com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn包中其實是有批量插入代碼實現的,這里我就不貼源碼了,大家自行跟蹤一下.我們來手工擴展一下:

擴展代碼

Talk is cheap, show me the code.先展示代碼.再帶大家慢慢解釋為什么這樣實現:

給你的MyBatis-Plus裝上批量插入的翅膀(推薦)

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

@Configuration
public class MybatisPlusConfig {

 /**
 * 分頁插件
 *
 * @return PaginationInterceptor
 */
 @Bean
 public PaginationInterceptor paginationInterceptor() {
 return new PaginationInterceptor();
 }

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

還要擴展一下自帶的BaseMapper,代碼如下:

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

import java.util.Collection;

/**
 * 擴展通用 Mapper,支持數據批量插入
 *
 * @author 天開易想
 */
public interface EasyBaseMapper<T> extends BaseMapper<T> {

 /**
 * 批量插入 僅適用于mysql
 *
 * @param entityList 實體列表
 * @return 影響行數
 */
 Integer insertBatchSomeColumn(Collection<T> entityList);
}

我們即可在業務類中,實現下面的引用了,代碼如下:

/**
 * 定義業務mapper接口,繼承剛剛擴展的EasyBaseMapper
 *
 * @author 天開易想
 */
@Mapper
public interface TestMapper extends EasyBaseMapper<Test> {
}

/**
 * 業務實現類接口,即可引用
 *
 * @author 天開易想
 */
@Service
public class TestServiceImpl extends ServiceImpl<TestMapper, Test> implements TestService {

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

因為在BaseMapper中是不能拿來直接引用的,為什么不能直接引用,據說是只支持MySql數據庫,所以作者沒有內置的原因吧!

到此這篇關于給你的MyBatis-Plus裝上批量插入的翅膀的文章就介紹到這了,更多相關MyBatis Plus批量插入內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/thinkYi/p/13723035.html

延伸 · 閱讀

精彩推薦
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
主站蜘蛛池模板: 成人视屏在线观看 | 国产免费成人 | 日本在线视频二区 | 91九色蝌蚪国产 | 欧美精品一区二区视频 | 人与xxxxhdxxxhdxx| 国产孕妇孕交大片孕 | 最新黄色电影网站 | 羞羞答答影院 | 成人毛片一区 | 黄色网址免费进入 | 欧美wwwsss9999 | 国产精品久久久久久久久久妇女 | 久久久久久久午夜 | 国产成人高潮免费观看精品 | 国产第一页精品 | 性爱视频免费 | 午夜视频在线免费观看 | 午夜天堂在线视频 | 国产一级免费电影 | 亚洲五码在线观看视频 | 久久久精品视频国产 | 久久久久999| 欧美一级免费视频 | 日本残忍极度灌浣肠视频 | 国产九色在线观看 | 369看片你懂的小视频在线观看 | 久久另类视频 | 欧美大电影免费观看 | 夜夜看 | 久久国产精品久久久久 | 毛片区| 久久精品2019中文字幕 | 99影视在线视频免费观看 | 亚洲精品午夜国产va久久成人 | 日本精品视频一区二区三区四区 | 亚洲乱操 | 欧产日产国产精品乱噜噜 | 爽爽淫人网 | 一级片九九 | 欧美日韩中文字幕在线视频 |