mybatis
Mybatis是一個優秀的持久層框架,支持定制SQL、存儲過程和高級映射。MyBatis避免了幾乎所有的JDBC代碼和手動設置參數和獲得結果集。MyBatis可以使用簡單的XML或注釋來配置和映射原生信息,并將接口和Java的POJO(Plain Old Java Objects)映射到數據庫中的記錄。
但是mybatis有一個讓我頭疼的問題,就是sql的工作量大,尤其是字段多的時候。雖然說可以用mybatis生成器工具(或者自己寫個模板工具)生成單個表的添加、刪除、查詢操作,但是在項目開發的過程中,添加新的字段是不可避免的。這些工具幫不了我,我還得把新的字段寫入所有的原始sql中進行添加、刪除和查詢。這是一個痛苦的過程,尤其是當你重復很多次的時候。
mybatis的單表操作對小偷來說也很麻煩,因為篩選條件可能是各種各樣的,所以你要寫很多動態sql來兼容查詢條件,這也讓我無法專心做業務。
每當這種情況發生時,我都會想念冬眠。呵呵,Hibernate很容易添加字段,單表操作也方便。但是我還是不喜歡用Hibernate,哈哈。
mybatis-plus
和mybatis-plus是一個結合了mybatis和hibernate優點的框架。它提供了hibernate的單表CRUD操作的便利,同時保留了mybatis的特點。
我們來看看官方是如何解釋mybatis-plus的:
Mybatis-Plus(簡稱MP)是Mybatis的增強工具。基于Mybatis,只做增強不做改動,為簡化開發,提高效率而生。
我們的愿景是成為Mybatis最好的伙伴,就像魂斗羅游戲里的1P和2P,有基友匹配,效率翻倍。
帶著問題去學習,請思考。
mybatis-plus如何實現單表URUD操作?mybatis-plus的底層實現原理是什么?mybatis-plus相對于mybatis helper等其他同類框架有哪些優勢?如何集成mybatis-plus快速搭建一個春開機項目?特點
從上圖可以看出,mybatis-plus不僅封裝了基本的CRUD操作,還內置了反SQL注入操作、常用分頁插件以及我最喜歡的ActiveRecord模式。
用過jfinal的人應該都知道什么是ActiveRecord。活動記錄是一種數據訪問設計模式,可以幫助你實現數據對象對象到關系數據庫的映射。
公共實體注釋
MPORM模式封裝了常用的CRUD操作,自然,實體注釋是必不可少的。我們先來看看有哪些注釋。
其中實體標注設置可以按如下方式處理:
當數據庫的表字段名為駝峰名時,不需要注釋。或者全局配置:underline dbColumnUnderline設置為true,大寫isCapitalMode設置為true。但其實我從來沒有手寫過這些評論。使用mp代碼生成器自動生成主體,直接覆蓋原主體,方便快捷,減少人為錯誤。至于@Version和@KeySequence,我好像沒用過。嘿嘿。
簡化的CRUD
如前所述,mp簡化了mybatis單表的基本操作。先來看看吧。
兩種編寫方式相比,我更傾向于ActiveRecord的模式編寫,因為不需要注入userMapper,只需要在創建對象后直接調用方法操作即可。
復雜的查詢也很簡單。創建一個新的EntityWrapper作為查詢對象,包裝器接口封裝了很多常用的方法。sql幾乎能寫出的條件,可以通過調用包裝器方法來表達。
建筑原理
參考答案省略。
但是我建議你去mp官網或者這里,哈哈-my batis-plus Practice and Architecture Principle.pdf。
Mybatis plus代碼生成器和Mybatis生成器
說到mybatis plus代碼生成器的代碼,我記得之前在這篇文章里介紹過。
開源項目spring-shiro-training思維導圖,讓項目不再難懂。現在再用一次。其實原理很簡單。定義velocity模板(當然也可以自定義),然后調用參數渲染模板生成相應的文件。
我建議生成的位置不要直接覆蓋原文件。你可能已經修改過了,直接覆蓋會導致丟失。
mybatis生成器生成的代碼是基本的添加、刪除、修改和實體。模板好像不能改,靈活性明顯不足。
Mp插件擴展
Mp不僅幫助我們實現了添加、刪除、搜索的基本操作,還擴展了很多實用的插件。使開發過程更容易。
作者:java思維導圖
鏈接:https://juejin.im/post/5a711587f265da3e5a579109