1. 程式人生 > 其它 >MyBatis與MyBatis-plus的區別

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