MyBatis-Plus?(opens new window)(簡(jiǎn)稱 MP)是一個(gè)?MyBatis?(opens new window)的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生。
特性
無(wú)侵入:只做增強(qiáng)不做改變,引入它不會(huì)對(duì)現(xiàn)有工程產(chǎn)生影響,如絲般順滑
損耗小:?jiǎn)?dòng)即會(huì)自動(dòng)注入基本 CURD,性能基本無(wú)損耗,直接面向?qū)ο蟛僮?/p>
強(qiáng)大的 CRUD 操作:內(nèi)置通用 Mapper、通用 Service,僅僅通過(guò)少量配置即可實(shí)現(xiàn)單表大部分 CRUD 操作,更有強(qiáng)大的條件構(gòu)造器,滿足各類(lèi)使用需求
支持 Lambda 形式調(diào)用:通過(guò) Lambda 表達(dá)式,方便的編寫(xiě)各類(lèi)查詢條件,無(wú)需再擔(dān)心字段寫(xiě)錯(cuò)
支持主鍵自動(dòng)生成:支持多達(dá) 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問(wèn)題
支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實(shí)體類(lèi)只需繼承 Model 類(lèi)即可進(jìn)行強(qiáng)大的 CRUD 操作
支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
內(nèi)置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來(lái)使用
內(nèi)置分頁(yè)插件:基于 MyBatis 物理分頁(yè),開(kāi)發(fā)者無(wú)需關(guān)心具體操作,配置好插件之后,寫(xiě)分頁(yè)等同于普通 List 查詢
分頁(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)置全局?jǐn)r截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規(guī)則,預(yù)防誤操作
一. 使用步驟
1.創(chuàng)建數(shù)據(jù)庫(kù)表

2.pom.xml導(dǎo)入依賴

3.application.properties配置數(shù)據(jù)庫(kù)

4.創(chuàng)建實(shí)體類(lèi)

5.創(chuàng)建Mapper類(lèi),繼承自BaseMapper,里面實(shí)現(xiàn)了基礎(chǔ)的增刪改查,我們可以直接使用,而不用自己再寫(xiě)mapper.xml文件.注解@Repository表示持久層。

6.在主啟動(dòng)類(lèi)中加入MapperScan注解

7.在測(cè)試類(lèi)中測(cè)試增刪改查

快速運(yùn)行成功!
二. 配置日志
由于省去了編寫(xiě)mapper.xml,我們不用再寫(xiě)sql語(yǔ)句,但是可以通過(guò)日志在控制臺(tái)輸出執(zhí)行的sql語(yǔ)句。在application.properties中配置log即可實(shí)現(xiàn)。


三. 插入數(shù)據(jù)保證ID唯一
使用雪花算法生成唯一ID。

四.自動(dòng)填充
數(shù)據(jù)庫(kù)表中的字段create_time,update_time


五. 樂(lè)觀鎖
并發(fā)控制,保證數(shù)據(jù)準(zhǔn)確。一般是在數(shù)據(jù)表中加上一個(gè)數(shù)據(jù)版本號(hào)?version?字段,表示數(shù)據(jù)被修改的次數(shù)。當(dāng)數(shù)據(jù)被修改時(shí),version?值會(huì)+1。當(dāng)線程A要更新數(shù)據(jù)值時(shí),在讀取數(shù)據(jù)的同時(shí)也會(huì)讀取?version?值,在提交更新時(shí),若剛才讀取到的?version?值與當(dāng)前數(shù)據(jù)庫(kù)中的?version?值相等時(shí)才更新,否則重試更新操作,直到更新成功。


六.分頁(yè)查詢
配置攔截器組件

直接使用Page對(duì)象

七.刪除操作

邏輯刪除和物理刪除
1.邏輯刪除: 在數(shù)據(jù)庫(kù)中沒(méi)有消失,只是用一個(gè)變量讓數(shù)據(jù)時(shí)效?
2.物理刪除 :從數(shù)據(jù)庫(kù)中直接移除

配置

直接測(cè)試刪除,然后查看數(shù)據(jù)庫(kù)中是否還存在
八. 條件構(gòu)造器



