使用MyBatis-Plus兵器棧開發集合

使用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 表,其表結構如下:


使用MyBatis-Plus兵器棧開發集合


其對應的數據庫 Schema 腳本如下:


使用MyBatis-Plus兵器棧開發集合


2.導入相應的依賴


使用MyBatis-Plus兵器棧開發集合


說明:我們使用mybatis-plus可以節省我們大量的代碼,儘量不要同時導入mybatis和mybatis-plus!

3.連接數據庫


使用MyBatis-Plus兵器棧開發集合


4.編寫代碼

使用mybatis-plus之後。只需要pojo、dao接口、及其他接口

編寫實體類 User.java(此處使用了 Lombok 簡化代碼)


使用MyBatis-Plus兵器棧開發集合


編寫Mapper類 UserMapper.java


使用MyBatis-Plus兵器棧開發集合


在 Spring Boot 啟動類中添加 @MapperScan 註解,掃描 Mapper 文件夾:


使用MyBatis-Plus兵器棧開發集合


添加測試類,進行功能測試:


使用MyBatis-Plus兵器棧開發集合


控制檯輸出:


使用MyBatis-Plus兵器棧開發集合


5.小結

通過以上幾個簡單的步驟,我們就實現了 User 表的 CRUD 功能,甚至連 XML 文件都不用編寫!


從以上步驟中,我們可以看到集成MyBatis-Plus非常的簡單,只需要引入 starter 工程,並配置 mapper 掃描路徑即可。


但 MyBatis-Plus 的強大遠不止這些功能,想要詳細瞭解 MyBatis-Plus 的強大功能?那就繼續往下看吧!

三、配置日誌

我們所用的sql現在是不可見的,我們希望知道他是怎麼執行的,所以我們必須要查看日誌!


使用MyBatis-Plus兵器棧開發集合


這樣就能查看到日誌文件


使用MyBatis-Plus兵器棧開發集合


四、CRUD擴展

Insert 插入


使用MyBatis-Plus兵器棧開發集合


參數說明


使用MyBatis-Plus兵器棧開發集合


舉例測試


使用MyBatis-Plus兵器棧開發集合


數據庫插入的id為全局默認的id(ID_WORKER)

主鍵生成策略

(1)分佈式系統唯一id生成


(2)雪花算法

我們需要配置主鍵自增


1、實體類字段上 @TableId(type =IdType.AUTO)


使用MyBatis-Plus兵器棧開發集合


2、數據庫字段一定要是自增的

4.1更新操作


使用MyBatis-Plus兵器棧開發集合


參數說明


使用MyBatis-Plus兵器棧開發集合


舉例測試


使用MyBatis-Plus兵器棧開發集合


創建時間、修改時間!這些個操作一遍都是自動化完成,我們不希望手動更新!

面試中經常會問到樂觀鎖,悲觀鎖


樂觀鎖:顧名思義十分樂觀,它總是被認為不會出現問題,無論幹什麼都不去上鎖!如果出現了問題,再次更新測試


悲觀鎖:顧名思義十分悲觀,它總是出現問題,無論幹什麼都會上鎖!再去操作!

樂觀鎖實現方式

  • 取出記錄是,獲取當前version
  • 更新時,帶上這個version
  • 執行更新事,set version=newVersion where version =oldVersion
  • 如果version不對,就更新失敗


使用MyBatis-Plus兵器棧開發集合


1、表中創建樂觀鎖字段version 默認值為1


使用MyBatis-Plus兵器棧開發集合


2、同步實體類


使用MyBatis-Plus兵器棧開發集合


3、註冊組件 (config包下)


使用MyBatis-Plus兵器棧開發集合


特別說明:


支持的數據類型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime

整數類型下 newVersion = oldVersion + 1

newVersion 會回寫到 entity 中

僅支持 updateById(id) 與 update(entity, wrapper) 方法

在 update(entity, wrapper) 方法下, wrapper 不能複用!!!

測試一下


使用MyBatis-Plus兵器棧開發集合


4.2查詢操作


使用MyBatis-Plus兵器棧開發集合


參數說明


使用MyBatis-Plus兵器棧開發集合


實例測試


使用MyBatis-Plus兵器棧開發集合


分頁查詢

分頁在網站使用的十分多

1、原始的limit進行分頁

2、pageHelper 第三方插件

3、Mybatis-Plus中也內置了分頁插件!

1、配置攔截器組件即可


使用MyBatis-Plus兵器棧開發集合


2、寫測試


使用MyBatis-Plus兵器棧開發集合


4.3刪除


使用MyBatis-Plus兵器棧開發集合


#參數說明


使用MyBatis-Plus兵器棧開發集合


使用MyBatis-Plus兵器棧開發集合


五、條件構造器

十分重要:Wrapper


我們寫一些複雜的sql可以用它來完成


現做幾個實例看看:


使用MyBatis-Plus兵器棧開發集合


使用MyBatis-Plus兵器棧開發集合


六、代碼自動生成器

dao、pojo、conrtroller、service自動生成


AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過 AutoGenerator 可以快速生成 Entity、 Mapper、Mapper XML、Service、Controller 等各個模塊的代碼,極大的提升了開發效率。


使用MyBatis-Plus兵器棧開發集合


使用MyBatis-Plus兵器棧開發集合


使用MyBatis-Plus兵器棧開發集合


七、總結

使用MyBatis-Plus兵器棧真的極大地豐富了我們的開發


分享到:


相關文章: