日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot (八): Mybatis 增强工具 MyBatis-Plus

發(fā)布時間:2024/1/8 javascript 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot (八): Mybatis 增强工具 MyBatis-Plus 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 簡介

在上一篇文章《Spring Boot (七): Mybatis極簡配置》 中我們介紹了在 Spring Boot 中 Mybatis 的基礎(chǔ)使用方式,其中有一部分美中不足的是 Mybatis 本身并未提供分頁功能,還需要我們自己手動添加 PageHelper 插件或者自己實現(xiàn)分頁的工具類,并且對單表的操作并不友好,簡單的 insert 、 update 、 delete 還需我們添加 SQL 語句,在目前微服務(wù)的架構(gòu)模式下,每個服務(wù)擁有自己的單獨的數(shù)據(jù)庫,單表的使用場景會越來越多, Mybatis 的使用無疑會產(chǎn)生很多重復(fù)勞動。

Mybatis Plus 在這樣的背景下應(yīng)運而生了,MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。而開源團(tuán)隊對這個開源項目的愿景如下:

愿景
我們的愿景是成為 MyBatis 最好的搭檔,就像 魂斗羅 中的 1P、2P,基友搭配,效率翻倍。

2. 特性

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

Mybatis-Plus 相比較 Mybatis 更好的支持了單表的相關(guān)操作,并且直接支持分頁功能,還加入了一系列有助于開發(fā)的插件,相關(guān)詳細(xì)內(nèi)容推薦各位讀者訪問官方網(wǎng)站獲得:https://mybatis.plus/guide/ 。下面將會介紹 Mybatis-Plus 的單表操作和引入 SQL 分析插件。

3. 工程實戰(zhàn)

3.1 工程依賴 pom.xml 如下:

代碼清單:spring-boot-mybatis-plus/pom.xml


<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version> </dependency><!-- https://mvnrepository.com/artifact/p6spy/p6spy --> <dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.8.6</version> </dependency>
  • mybatis-plus-boot-starter 為 mybatis-plus 所需依賴
  • p6spy 為 SQL 分析打印依賴,如不需要,可以單獨引入 mybatis-plus-boot-starter 。

3.2 配置

配置文件 application.yml 如下:

代碼清單:spring-boot-mybatis-plus/src/main/resources/application.yml


server:port: 8080 spring:application:name: spring-boot-mybatis-xmldatasource:url: jdbc:p6spy:mysql://172.16.96.112:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.p6spy.engine.spy.P6SpyDrivertype: com.zaxxer.hikari.HikariDataSourcehikari:auto-commit: trueminimum-idle: 2idle-timeout: 60000connection-timeout: 30000max-lifetime: 1800000pool-name: DatebookHikariCPmaximum-pool-size: 5 # 配置slq打印日志 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

注意:開啟 mybatis-plus 的 SQL 分析打印

  • 需要配置 mybatis-plus.configuration.log-impl 。
  • 修改配置 spring.datasource.driver-class-name 為 com.p6spy.engine.spy.P6SpyDriver ,這個配置是使用 p6spy 提供的驅(qū)動類。
  • url 前綴為 jdbc:p6spy 跟著冒號為對應(yīng)數(shù)據(jù)庫連接地址。
  • 該插件有性能損耗,不建議生產(chǎn)環(huán)境使用。
  • 還需增加 spy.properties ,如下:

代碼清單:spring-boot-mybatis-plus/src/main/resources/spy.properties


module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory # 自定義日志打印 logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger #日志輸出到控制臺 appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger # 使用日志系統(tǒng)記錄 sql #appender=com.p6spy.engine.spy.appender.Slf4JLogger # 設(shè)置 p6spy driver 代理 deregisterdrivers=true # 取消JDBC URL前綴 useprefix=true # 配置記錄 Log 例外,可去掉的結(jié)果集有error,info,batch,debug,statement,commit,rollback,result,resultset. excludecategories=info,debug,result,batch,resultset # 日期格式 dateformat=yyyy-MM-dd HH:mm:ss # 實際驅(qū)動可多個 #driverlist=org.h2.Driver # 是否開啟慢SQL記錄 outagedetection=true # 慢SQL記錄標(biāo)準(zhǔn) 2 秒 outagedetectioninterval=2

3.3 Mapper 類

代碼清單:spring-boot-mybatis-plus/src/main/java/com/springboot/springbootmybatisplus/mapper/UserMapper.java


public interface UserMapper extends BaseMapper<User> { }

這里只需要繼承 BaseMapper 即可, BaseMapper 為我們提供了豐富的單表操作,具體的操作可以查看源碼 com.baomidou.mybatisplus.core.mapper.BaseMapper<T> ,其中的注釋非常詳盡。

3.4 Service 類

Mybatis-Plus 除了為我們提供了基礎(chǔ)的 Mapper 類以外,還為我們提供了 IService ,通用 Service CRUD 封裝IService接口,進(jìn)一步封裝 CRUD 采用 get 查詢單行 remove 刪除 list 查詢集合 page 分頁 前綴命名方式區(qū)分 Mapper 層避免混淆。并且官方建議我們?nèi)绻嬖谧远x通用 Service 方法的可能,請創(chuàng)建自己的 IBaseService 繼承 Mybatis-Plus 提供的基類。

UserService.java 代碼如下:

代碼清單:spring-boot-mybatis-plus/src/main/java/com/springboot/springbootmybatisplus/service/UserService.java


public interface UserService extends IService<User> { }

UserServiceImpl.java 代碼如下;

代碼清單:spring-boot-mybatis-plus/src/main/java/com/springboot/springbootmybatisplus/service/impl/UserServiceImpl.java


@Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { }

相關(guān)測試代碼已經(jīng)創(chuàng)建測試 controller ,這里就不列出了,有需要的讀者可以訪問 Github 代碼倉庫自行取用。

3.5 分頁配置類

代碼清單:spring-boot-mybatis-plus/src/main/java/com/springboot/springbootmybatisplus/config/MybatisPlusConfig.java


@Configuration public class MybatisPlusConfig {/*** 注冊分頁插件* @return*/@Beanpublic PaginationInterceptor paginationInterceptor(){return new PaginationInterceptor();}}

4. 測試

啟動工程后,打開瀏覽器訪問:http://localhost:8080/findPage ,可以看到 json 正常返回,如下:

{"records":[{"id":"a0ac692d-e1f1-11e9-9a69-0242ac110002","nickName":"geekdigging.com","age":108,"createDate":"2019-09-28T13:12:31.000 0000"},{"id":"b9168576-e1f1-11e9-9a69-0242ac110002","nickName":"www.geekdigging.com","age":18,"createDate":"2019-09-28T13:13:12.000 0000"}],"total":2,"size":5,"current":1,"orders":[],"searchCount":true,"pages":1 }

這時我們查看控制臺的日志,可以看到 SQL 分析的相關(guān)日志,如下:

從日志中,我們可以清楚的看到當(dāng)前日志執(zhí)行的過程,先執(zhí)行了什么后執(zhí)行了什么,并且耗時是多少,有助于我們的進(jìn)行 SQL 的性能分析,知道具體是哪些 SQL 耗時會比較長。

5. 小結(jié)

Mybatis-Plus 整體使用都比較簡單,Mybatis 支持的使用方式 Mybatis-Plus 都支持,只是原本配置文件 application.yml 中的 mybatis.*** 需要替換成為 mybatis-plus.*** ,并且增強(qiáng)了 Mybatis 原本單表操作的不足之處,對于官方的宣言:只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。筆者認(rèn)為是十分貼切的。本文僅介紹了 Mybatis-Plus 的一些基礎(chǔ)使用方式,官方除了增強(qiáng)了單表操作、分頁、 SQL 分析等功能外,還提供了很多實用的插件,例如:熱加載、邏輯刪除、SQL 注入器、攻擊 SQL 阻斷解析器等功能,如有需要的讀者朋友可以訪問官方文檔自取。

5. 示例代碼

示例代碼-Github

示例代碼-Gitee

6. 參考

《Mybatis-Plus官方文檔》

如果我的文章對您有幫助,請掃碼關(guān)注下作者的公眾號:獲取最新干貨推送:)

總結(jié)

以上是生活随笔為你收集整理的Spring Boot (八): Mybatis 增强工具 MyBatis-Plus的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。