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


測(cè)試列表(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ù)庫(kù)類型,現(xiàn)在市面上的數(shù)據(jù)庫(kù)幾乎全部支持,我們還可以通過自定義方言的方式,持續(xù)添加更多的數(shù)據(jù)庫(kù)支持。
-
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
