使用fluent mybatis也可以不用寫具體的 xml 檔案,透過 java api 可以構造出比較複雜的業務 sql 語句,做到程式碼邏輯和 sql 邏輯的合一。不再需要在 Dao 中組裝查詢或更新操作,或在 xml 與 mapper 中再組裝引數。那對比原生 Mybatis,Mybatis Plus 或者其他框架,FluentMybatis提供了哪些便利呢?

# 需求場景設定

我們透過一個比較典型的業務需求來具體實現和對比下,假如有學生成績表結構如下:

再見MybatisPlus,阿里推出新ORM框架!

現在有需求:

「統計 2000 年三門學科(‘英語’, ‘數學’, ‘語文’)及格分數按學期,學科統計最低分,最高分和平均分, 且樣本數需要大於 1 條,統計結果按學期和學科排序」

我們可以寫 SQL 語句如下

再見MybatisPlus,阿里推出新ORM框架!

那上面的需求,分別用fluent mybatis, 原生mybatis和Mybatis plus來實現一番。

# 三者實現對比

使用fluent mybatis 來實現上面的功能

再見MybatisPlus,阿里推出新ORM框架!

我們可以看到fluent api的能力,以及 IDE 對程式碼的渲染效果。

換成mybatis原生實現效果

定義Mapper介面

再見MybatisPlus,阿里推出新ORM框架!

2。定義介面需要用到的引數實體 SummaryQuery

再見MybatisPlus,阿里推出新ORM框架!

3。定義實現業務邏輯的mapper xml檔案

再見MybatisPlus,阿里推出新ORM框架!

4。實現業務介面(這裡是測試類,實際應用中應該對應 Dao 類)

再見MybatisPlus,阿里推出新ORM框架!

總之,直接使用 mybatis,實現步驟還是相當的繁瑣,效率太低。那換成mybatis plus的效果怎樣呢?

# 換成mybatis plus實現效果

mybatis plus的實現比mybatis會簡單比較多,實現效果如下

再見MybatisPlus,阿里推出新ORM框架!

如紅框圈出的,寫mybatis plus實現用到了比較多字串的硬編碼(可以用 Entity 的 get lambda 方法部分代替字串編碼)。字串的硬編碼,會給開發同學造成不小的使用門檻,個人覺的主要有 2 點:

欄位名稱的記憶和敲碼困難

Entity 屬性跟隨資料庫欄位發生變更後的執行時錯誤

其他框架,比如TkMybatis在封裝和易用性上比mybatis plus要弱,就不再比較了。

# 生成程式碼編碼比較

fluent mybatis生成程式碼設定

再見MybatisPlus,阿里推出新ORM框架!

# mybatis plus程式碼生成設定

再見MybatisPlus,阿里推出新ORM框架!

再見MybatisPlus,阿里推出新ORM框架!

# FluentMybatis特性一覽

再見MybatisPlus,阿里推出新ORM框架!

# 三者對比總結

看完 3 個框架對同一個功能點的實現, 各位看官肯定會有自己的判斷,筆者這裡也總結了一份比較。

再見MybatisPlus,阿里推出新ORM框架!

對 Fluent Mybatis 感興趣的網友,支援大家去閱讀官方原始碼,發現更多新大陸!

http://

juejin。cn/post/68860199

29519177735