超越 Mybatis-Plus?超強 ORM 框架橫空出世!
1
MyBatis-Flex 是一個優(yōu)雅的 MyBatis 增強框架,它非常輕量、同時擁有極高的性能與靈活性。我們可以輕松的使用 Mybaits-Flex 鏈接任何數(shù)據(jù)庫,其內(nèi)置的 QueryWrapper^亮點 幫助我們極大的減少了 SQL 編寫的工作的同時,減少出錯的可能性。
總而言之,MyBatis-Flex 能夠極大地提高我們的開發(fā)效率和開發(fā)體驗,讓我們有更多的時間專注于自己的事情。
2
輕量:除了 MyBatis,沒有任何第三方依賴輕依賴、沒有任何攔截器,其原理是通過 SqlProvider 的方式實現(xiàn)的輕實現(xiàn)。同時,在執(zhí)行的過程中,沒有任何的 Sql 解析(Parse)輕運行。這帶來了幾個好處:1、極高的性能;2、極易對代碼進行跟蹤和調(diào)試;3、把控性更高。
靈活:支持 Entity 的增刪改查、以及分頁查詢的同時,MyBatis-Flex 提供了 Db + Row^靈活 工具,可以無需實體類對數(shù)據(jù)庫進行增刪改查以及分頁查詢。與此同時,MyBatis-Flex 內(nèi)置的 QueryWrapper^靈活 可以輕易的幫助我們實現(xiàn) 多表查詢、鏈接查詢、子查詢 等等常見的 SQL 場景。
強大:支持任意關(guān)系型數(shù)據(jù)庫,還可以通過方言持續(xù)擴展,同時支持 多(復(fù)合)主鍵、邏輯刪除、樂觀鎖配置、數(shù)據(jù)脫敏、數(shù)據(jù)審計、 數(shù)據(jù)填充 等等功能。
3
在開始之前,我們假定您已經(jīng):
熟悉 Java 環(huán)境配置及其開發(fā)
熟悉 關(guān)系型 數(shù)據(jù)庫,比如 MySQL
熟悉 Spring Boot 及相關(guān)框架
熟悉 Java 構(gòu)建工具,比如 Maven
4
Spring Boot 場景
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-spring-boot-starter</artifactId>
<version>1.5.3</version>
</dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-processor</artifactId>
<version>1.5.3</version>
<scope>provided</scope>
</dependency>
5
MyBatis-Flex 主要是和 MyBatis-Plus 與 Fluent-MyBatis 對比,
MyBatis-Plus:老牌的 MyBatis 增強框架,開源于 2016 年。
Fluent-MyBatis:阿里云開發(fā)的 MyBatis 增強框架(來自于阿里云·云效產(chǎn)品團隊)


測試列表(List)數(shù)據(jù)查詢
要求返回的數(shù)據(jù)為 10 條數(shù)據(jù)。
MyBatis-Flex 的代碼如下:
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.where(FLEX_ACCOUNT.ID.ge(100).or(FLEX_ACCOUNT.USER_NAME
.eq("admin" + ThreadLocalRandom.current().nextInt(10000))))
.limit(10);
mapper.selectListByQuery(queryWrapper);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ge("id", 100);
queryWrapper.or();
queryWrapper.eq("user_name", "admin" + ThreadLocalRandom.current().nextInt(10000));
queryWrapper.last("limit 10");
mapper.selectList(queryWrapper);
---------------
>>>>>>>testFlexSelectTop10:90
>>>>>>>testPlusSelectTop10WithLambda:743
>>>>>>>testPlusSelectTop10:678
---------------
>>>>>>>testFlexSelectTop10:85
>>>>>>>testPlusSelectTop10WithLambda:692
>>>>>>>testPlusSelectTop10:684
---------------
>>>>>>>testFlexSelectTop10:84
>>>>>>>testPlusSelectTop10WithLambda:692
>>>>>>>testPlusSelectTop10:670
---------------
>>>>>>>testFlexSelectTop10:85
>>>>>>>testPlusSelectTop10WithLambda:737
>>>>>>>testPlusSelectTop10:667
---------------
>>>>>>>testFlexSelectTop10:85
>>>>>>>testPlusSelectTop10WithLambda:691
>>>>>>>testPlusSelectTop10:684
---------------
>>>>>>>testFlexSelectTop10:97
>>>>>>>testPlusSelectTop10WithLambda:760
>>>>>>>testPlusSelectTop10:666
---------------
>>>>>>>testFlexSelectTop10:80
>>>>>>>testPlusSelectTop10WithLambda:673
>>>>>>>testPlusSelectTop10:637
---------------
>>>>>>>testFlexSelectTop10:81
>>>>>>>testPlusSelectTop10WithLambda:653
>>>>>>>testPlusSelectTop10:639
---------------
>>>>>>>testFlexSelectTop10:82
>>>>>>>testPlusSelectTop10WithLambda:659
>>>>>>>testPlusSelectTop10:636
---------------
>>>>>>>testFlexSelectTop10:81
>>>>>>>testPlusSelectTop10WithLambda:654
>>>>>>>testPlusSelectTop10:656
MyBatis-Flex 的查詢 10 條數(shù)據(jù)的速度,大概是 MyBatis-Plus 的 5~10 倍左右。
6
MyBatis-Flex 支持的數(shù)據(jù)庫類型,現(xiàn)在市面上的數(shù)據(jù)庫幾乎全部支持,我們還可以通過自定義方言的方式,持續(xù)添加更多的數(shù)據(jù)庫支持。
-
Gitee地址:https://gitee.com/mybatis-flex/mybatis-flex
-
GitHub地址:https://github.com/mybatis-flex/mybatis-flex -
操作文檔:https://mybatis-flex.com/zh/intro/support-database.html
