使用MyBatis-Plus兵器棧開發集合
一、技術預研
MyBatis-Plus是一款優秀的MyBatis增加工具,特色有集成了Lambda表達式,簡化了SQL開發,而且具有強大的代碼生成工具。在進行單表操作時,MyBatis-Plus完全不需要寫一行sql代碼,就能實現增刪改查的全部功能,是一款不可多得的工具。提供了like、in、group by、where、and、or、desc、order by等所有操作,非常強大,與Spring Boot的完美整合更是廣大程序員的福音。而且支持分頁插件,幾乎支持市面上所有的流行數據庫以及國產數據庫。
1.1 支持數據庫
- mysql 、 mariadb 、 oracle 、 db2 、 h2 、 hsql 、 sqlite 、 postgresql 、 sqlserver
- 達夢數據庫 、 虛谷數據庫 、 人大金倉數據庫
二、簡單實例
現有一張 User 表,其表結構如下:
其對應的數據庫 Schema 腳本如下:
2.導入相應的依賴
說明:我們使用mybatis-plus可以節省我們大量的代碼,儘量不要同時導入mybatis和mybatis-plus!
3.連接數據庫
4.編寫代碼
使用mybatis-plus之後。只需要pojo、dao接口、及其他接口
編寫實體類 User.java(此處使用了 Lombok 簡化代碼)
編寫Mapper類 UserMapper.java
在 Spring Boot 啟動類中添加 @MapperScan 註解,掃描 Mapper 文件夾:
添加測試類,進行功能測試:
控制檯輸出:
5.小結
通過以上幾個簡單的步驟,我們就實現了 User 表的 CRUD 功能,甚至連 XML 文件都不用編寫!
從以上步驟中,我們可以看到集成MyBatis-Plus非常的簡單,只需要引入 starter 工程,並配置 mapper 掃描路徑即可。
但 MyBatis-Plus 的強大遠不止這些功能,想要詳細瞭解 MyBatis-Plus 的強大功能?那就繼續往下看吧!
三、配置日誌
我們所用的sql現在是不可見的,我們希望知道他是怎麼執行的,所以我們必須要查看日誌!
這樣就能查看到日誌文件
四、CRUD擴展
Insert 插入
參數說明
舉例測試
數據庫插入的id為全局默認的id(ID_WORKER)
主鍵生成策略
(1)分佈式系統唯一id生成
(2)雪花算法
我們需要配置主鍵自增
1、實體類字段上 @TableId(type =IdType.AUTO)
2、數據庫字段一定要是自增的
4.1更新操作
參數說明
舉例測試
創建時間、修改時間!這些個操作一遍都是自動化完成,我們不希望手動更新!
面試中經常會問到樂觀鎖,悲觀鎖
樂觀鎖:顧名思義十分樂觀,它總是被認為不會出現問題,無論幹什麼都不去上鎖!如果出現了問題,再次更新測試
悲觀鎖:顧名思義十分悲觀,它總是出現問題,無論幹什麼都會上鎖!再去操作!
樂觀鎖實現方式
- 取出記錄是,獲取當前version
- 更新時,帶上這個version
- 執行更新事,set version=newVersion where version =oldVersion
- 如果version不對,就更新失敗
1、表中創建樂觀鎖字段version 默認值為1
2、同步實體類
3、註冊組件 (config包下)
特別說明:
支持的數據類型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime
整數類型下 newVersion = oldVersion + 1
newVersion 會回寫到 entity 中
僅支持 updateById(id) 與 update(entity, wrapper) 方法
在 update(entity, wrapper) 方法下, wrapper 不能複用!!!
測試一下:
4.2查詢操作
參數說明
實例測試
分頁查詢
分頁在網站使用的十分多
1、原始的limit進行分頁
2、pageHelper 第三方插件
3、Mybatis-Plus中也內置了分頁插件!
1、配置攔截器組件即可
2、寫測試
4.3刪除
#參數說明
五、條件構造器
十分重要:Wrapper
我們寫一些複雜的sql可以用它來完成
現做幾個實例看看:
六、代碼自動生成器
dao、pojo、conrtroller、service自動生成
AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過 AutoGenerator 可以快速生成 Entity、 Mapper、Mapper XML、Service、Controller 等各個模塊的代碼,極大的提升了開發效率。
七、總結
使用MyBatis-Plus兵器棧真的極大地豐富了我們的開發