MyBatis與MyBatis-plus的區別


一、MyBatis

MyBatis前身是iBatis,是Clinton Begin在2001年發起的一個開源項目。最初側重於碼軟件開發,后續發展成為一款基於java的持久層框架。Mybatis是一款優秀的持久層框架支持自定義SQL查詢、存儲過程和高級映射,消除了幾乎所有的JDBC代碼和參數的手動設置以及結果集的檢索。MyBatis可以使用簡單的XML或者注解進行映射和配置,通過將參數映射到配置的SQL最終解析為執行的SQL語句,查詢后將SQl結果集映射成java對象返回。MyBatis提供的持久層框架包括SQL Maps(Mapper)和Data Access Objects(DAO),相對於Hibernate而言它提供的是一種把自動化的ORM實現。MyBatis中一級緩存會默認啟用(本地緩存)且不受控制,一般說緩存時指的是MyBatis的二級緩存

主要使用的標簽有

1)、<select></select>對應注解@lSelect

2)、<update></update>對應注解@Update

3)、<insert></insert>對應注解@Insert

4)、<delete></delete>對應注解@Delete

5)、<where></where>:在某些條件根據入參有無決定是可使用以避免1=1這種寫法,也會根據是否為where條件后第一個條件參數自動去除and

6)、<if></if>:類似於java中的條件判斷if,沒有<else>標簽

7)、<choose>標簽

<choose>

    <when></when>

    <otherwise></otherwise>

</choose>

8)、<foreach></forwach>:可以對數組、Map或實現了Iterable接口(如List、Set)的對象遍歷。可實現in、批量更新、批量插入等。

9)、<resultMap></resultMap>:映射結果集

10)、<resultType></resultType>:映射結果類型,可是java實體類或Map、List等類型。

二、MyBatis-plus

MyBatis-plus是一款MyBatis的增強工具,在MyBatis 的基礎上只做增強不做改變。其是國內團隊苞米豆在MyBatis基礎上開發的增強框架,擴展了一些功能,以提高效率。引入 Mybatis-Plus 不會對現有的 Mybatis 構架產生任何影響,而且 MyBatis-plus 支持所有 Mybatis 原生的特性

 1)依賴少:僅僅依賴 Mybatis 以及 Mybatis-Spring 。

2)損耗小:啟動即會自動注入基本 CURD,性能基本無損耗,直接面向對象操作 。

3)預防Sql注入:內置 Sql 注入剝離器,有效預防Sql注入攻擊 。

4)通用CRUD操作:內置通用 Mapper、通用 Service,僅僅通過少量配置即可實現單表大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求 。

5)多種主鍵策略:支持多達4種主鍵策略(內含分布式唯一ID生成器),可自由配置,完美解決主鍵問題 。

6)支持熱加載:Mapper 對應的 XML 支持熱加載,對於簡單的 CRUD 操作,甚至可以無 XML 啟動

7)支持ActiveRecord:支持 ActiveRecord 形式調用,實體類只需繼承 Model 類即可實現基本 CRUD 操作

8)支持代碼生成:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼(生成自定義文件,避免開發重復代碼),支持模板引擎、有超多自定義配置等。

9)支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )。

10)支持關鍵詞自動轉義:支持數據庫關鍵詞(order、key…)自動轉義,還可自定義關鍵詞 。

11)內置分頁插件:基於 Mybatis 物理分頁,開發者無需關心具體操作,配置好插件之后,寫分頁等同於普通List查詢。

12)內置性能分析插件:可輸出 Sql 語句以及其執行時間,建議開發測試時啟用該功能,能有效解決慢查詢 。

13)內置全局攔截插件:提供全表 delete 、 update 操作智能分析阻斷,預防誤操作。

14)默認將實體類的類名查找數據庫中的表,使用@TableName(value="table1")注解指定表名,@TableId指定表主鍵,若字段與表中字段名保持一致可不加注解。



來源:https://www.jianshu.com/p/8556c8468241


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM