mybatis-plus-max簡介
MybatisPlusMax是MybatisPlus的增強包,秉承只擴充不修改的理念,對MybatisPlus做增強。
正如MybatisPlus是對MyBatis的增強,MybatisPlusMax是對MybatisPlus的增強,擴充理念一脈相承。
顯而易見,MybatisPlus依然進入軟體成熟期,對其進行微小的修改會慎之又慎,向其提交修改PR週期較長,基於此考慮,為了更好的使用MybatisPlus,作者決定擴充第三方功能包。
當MybatisPlusMax程式碼逐步成熟後,作者願意一次性捐獻給MybatisPlus官方團隊,以方便使用者更好的使用MybatisPlus。
與MybatisPlus的淵源
MyBatis粉
早期的作者也是MyBatis粉,如果你是從拼接SQL時代過來的,受夠了在Java程式碼中拼接SQL字串,那麼MyBatis絕對讓你愛不釋手。
隨著MyBatis的重度使用,也暴露出一些問題:訪問資料庫極其囉嗦,單表CURD兜兜轉轉需要寫一大堆程式碼,每個專案有很多張表,每個開發會做很多專案,此時的MyBatis從開發端來講需要完善。
MybatisPlus初版
MybatisPlus敏銳的發現MyBatis的痛點,著手對MyBatis重複業務程式碼進行封裝,於是便形成了早期版本MybatisPlus。
早期的MyBatisPlus欄位名等魔法值
充斥著Java程式碼裡,並且為了構建查詢條件,需要編寫及其囉嗦的程式碼,很多MyBatis使用者對此嗤之以鼻。被噴的原因如下:大量的欄位名魔法值充斥在Java程式碼裡,與早期的拼接SQL字串有何區別;非常簡單的查詢條件,在XML檔案中很容易完成,使用MybatisPlus構造查詢條件囉囉嗦嗦,不知所云。
早期的MybatisPlus為了改進MyBatis的使用的想法是好的,可是在落地實踐過程中帶來了更大的問題,因此處於不溫不火的狀態。
MybatisPlus新生
Java 8帶來了Lambda表示式,為MybatisPlus重構程式碼帶來了新的基礎能力。MybatisPlus基於Java 8新特性進行程式碼重構,為其帶來了新生,使用Lambda語法,幹掉了Java程式碼裡的欄位名等魔法值,此時的MybatisPlus真正展示出吸引力。
作者粉的是Lambda表示式版本的MybatisPlus,不管是查詢條件的構建,還是欄位的選取,均使用Lambda表示式(方法引用)來完成,Java程式碼變得清爽。
方法引用效能
使用方法引用
來替換欄位名
,是否會產生效能問題呢?會也不會。會是因為經過一層包裝,效能確實有損耗,不會是因為MybatisPlus在使用反射的地方使用了快取,有效的解決了中間過程耗時操作,因此可以認為Lambda版的MybatisPlus的效能略有下降。用略微下降一點效能的代價置換開發的靈活性,這一點是值得的。
況且現代伺服器硬體逐年提高,從系統總體而言考慮,利大於弊。
基於方法引用
實現編碼,在遇到程式碼重構是有多爽就不用多說了。小步快跑、敏捷開發等,造成的屎山程式碼不勝列舉,程式碼重構的地位變得愈發重要。
作者的努力
作者是MybatisPlus粉,因此在系統元件選擇態度更為積極。
零SQL函數語言程式設計時代
在Lambda表示式加持下的MybatisPlus,零SQL函數語言程式設計成為了可能。零SQL是隻儘量少顯示的編寫SQL語句,能不寫就不寫,對於疑難雜症,退回使用MyBatis XML更為方便,此時也不能一條道走到黑。
MybatisPlusMax
MybatisPlusMax
不是新內容新,是從common包中抽離出來的程式碼,方便使用者更好的使用和解藕。
DAO快取
給DAO層透明化的增加快取,能夠極大的提高介面的響應效率,透明化意味著不知不覺間具備了快取的能力,業務程式碼零感知。這裡使用的是Redis分散式快取,Redis是繼Mysql之後必備的元件,因此預設快取使用Redis分散式快取。
有關DAO更多內容,請檢視影片教程增強MybatisPlus!一行程式碼整合Redis分散式快取!
多表連線查詢
在我們使用Lambda風格搞定單表查詢之後,因業務需要,多表連線查詢必不可少!為此作者在此方面也做了不少努力,既然選擇零SQL程式設計,那麼便堅持到底。
在這裡需要說明幾點,有不少聲音認為,單表使用MybatisPlus,多表使用MyBatis,有這種想法的朋友可以更近一步,不然便是自欺欺人,掛著MybatisPlus之名幹MyBatis之實。
實際上,MyBatis使用join
來完成連表查詢,本身是有效能缺陷的,資料庫資料量膨脹越來越快,join
連表查詢的弊端愈發明顯。《阿里巴巴開發者手冊》明令禁止使用join
查詢,你還在堅持什麼呢?
以Lambda版MybatisPlus單表查詢為基礎,透過Java記憶體拼裝,完成多表連線查詢是全新的選擇。影片教程如下:
- MybatisPlus多表連線查詢
- MybatisPlus多表連線查詢合集說明
- MybatisPlus多表連線查詢一對一單條記錄查詢
- MybatisPlus多表連線查詢一對一查詢列表資料
- MybatisPlus多表連線查詢一對一分頁查詢資料
- MybatisPlus多表連線查詢一對多查詢列表資料
- MybatisPlus多表連線查詢一對多分頁查詢資料
- MybatisPlus多表連線查詢結語總結
- 用程式碼生成器自動化實現MybatisPlus多表連線查詢
- MybatisPlus多表連線查詢過濾敏感欄位屬性
- MyBatis多表連線查詢開啟二級快取髒資料案例分析
- MybatisPlus多表連線查詢之二級快取
Java程式碼生成器
只要你想偷懶,那麼Java程式碼生成器便是偷懶的利器,Java程式碼生成器以MybatisPlus為基礎,透過在全域性yml
檔案中複用資料庫,讀取資料庫後設資料資訊,一件生成domain、mapper、service、controller等Spring MVC風格程式碼,以單表查詢為主,兼顧多表連線查詢,是你的開發好幫手。
影片教程
後記
作者叫賽泰先生
,主要技術分享平臺在B站,是一位MybatisPlus粉,基於MybatisPlus做實戰技術分享,希望能對喜歡MybatisPlus的你有所幫助。
另外有MybatisPlus技術學習群,新增UP微信dream4s
付費進群(個位數),請註明來意。