MyBatis-Plus?(opens new window)(簡稱 MP)是一個(gè)?MyBatis?(opens new window)的增強(qiáng)工具瓷产,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變薪鹦,為簡化開發(fā)、提高效率而生叹坦。
特性
無侵入:只做增強(qiáng)不做改變害淤,引入它不會(huì)對現(xiàn)有工程產(chǎn)生影響扇雕,如絲般順滑
損耗小:啟動(dòng)即會(huì)自動(dòng)注入基本 CURD,性能基本無損耗窥摄,直接面向?qū)ο蟛僮?/p>
強(qiáng)大的 CRUD 操作:內(nèi)置通用 Mapper镶奉、通用 Service,僅僅通過少量配置即可實(shí)現(xiàn)單表大部分 CRUD 操作崭放,更有強(qiáng)大的條件構(gòu)造器哨苛,滿足各類使用需求
支持 Lambda 形式調(diào)用:通過 Lambda 表達(dá)式,方便的編寫各類查詢條件币砂,無需再擔(dān)心字段寫錯(cuò)
支持主鍵自動(dòng)生成:支持多達(dá) 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence)建峭,可自由配置,完美解決主鍵問題
支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用决摧,實(shí)體類只需繼承 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、SQLServer 等多種數(shù)據(jù)庫
內(nèi)置性能分析插件:可輸出 Sql 語句以及其執(zhí)行時(shí)間叛薯,建議開發(fā)測試時(shí)啟用該功能浑吟,能快速揪出慢查詢
內(nèi)置全局?jǐn)r截插件:提供全表 delete 笙纤、 update 操作智能分析阻斷,也可自定義攔截規(guī)則组力,預(yù)防誤操作
一. 使用步驟
1.創(chuàng)建數(shù)據(jù)庫表
2.pom.xml導(dǎo)入依賴
3.application.properties配置數(shù)據(jù)庫
4.創(chuàng)建實(shí)體類
5.創(chuàng)建Mapper類省容,繼承自BaseMapper,里面實(shí)現(xiàn)了基礎(chǔ)的增刪改查燎字,我們可以直接使用腥椒,而不用自己再寫mapper.xml文件.注解@Repository表示持久層。
6.在主啟動(dòng)類中加入MapperScan注解
7.在測試類中測試增刪改查
快速運(yùn)行成功候衍!
二. 配置日志
由于省去了編寫mapper.xml,我們不用再寫sql語句笼蛛,但是可以通過日志在控制臺輸出執(zhí)行的sql語句。在application.properties中配置log即可實(shí)現(xiàn)蛉鹿。
三. 插入數(shù)據(jù)保證ID唯一
使用雪花算法生成唯一ID滨砍。
四.自動(dòng)填充
數(shù)據(jù)庫表中的字段create_time,update_time
五. 樂觀鎖
并發(fā)控制,保證數(shù)據(jù)準(zhǔn)確妖异。一般是在數(shù)據(jù)表中加上一個(gè)數(shù)據(jù)版本號?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ù)庫中的?version?值相等時(shí)才更新,否則重試更新操作散罕,直到更新成功分歇。
六.分頁查詢
配置攔截器組件
直接使用Page對象
七.刪除操作
邏輯刪除和物理刪除
1.邏輯刪除: 在數(shù)據(jù)庫中沒有消失,只是用一個(gè)變量讓數(shù)據(jù)時(shí)效?
2.物理刪除 :從數(shù)據(jù)庫中直接移除
配置
直接測試刪除欧漱,然后查看數(shù)據(jù)庫中是否還存在
八. 條件構(gòu)造器