Mybatis-Flex 和 Mybatis-Plus 性能对比,v1.1.0 发布

Mybatis-Flex 是一个优雅的 Mybatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper 帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。

总而言之,Mybatis-Flex 能够极大地提高我们的开发效率和开发体验,让我们有更多的时间专注于自己的事情。

Mybatis-Flex 是一个和 Mybatis-Plus 类似的框架,但各有特点。v1.1.0 主要更新内容如下:

  • 新增:Entity 的 onSet、onUpdate、onInsert 添加全局监听器的配置
  • 优化:移除 QueryColumn.isNull 和 isNotNull 的参数
  • 优化:重构 CustomKeyGenerator 的部分代码
  • 修复:UpdateEntity 工具类在某些场景下出错的问题
  • 修复:审计消息 AuditMessage 在 entity 配置 typeHandler 时,获取的参数不正确的问题
  • 文档:添加 entity 全局监听器的相关文档

在上一个版本发布了,Mybatis-Flex 和 Mybatis-Plus 的功能对比后,应一些同学的要求,这个版本也放出了 Mybaits-Flex 和 Mybaits-Plus 性能对比的测试源码以及测试结果。

测试方法很简单

使用 h2 数据库,在初始化的时候分别为 flex 和 plus 创建两个不同的数据库, 但是完全一样的数据结构、数据内容和数据量(每个库 2w 条数据)。

直接进行预热,之后通过打印时间戳进行对比,消耗的时间越少,性能越高(每次测试 10 轮)。

测试步骤:

  • 1、clone 代码。
  • 2、直接运行 TestStarter  main 方法即可。

查询单条数据

Mybatis-Flex 的性能大概是 Mybatis-Plus 的 5 ~ 8 倍。

以下是日志,需要注意的是:每台机器的每次测试的数值肯定有所不同,但是应该会维持一个大概的比例。

---------------
>>>>>>>testFlexSelectOne:26
>>>>>>>testPlusSelectOneWithLambda:109
>>>>>>>testPlusSelectOne:119
---------------
>>>>>>>testFlexSelectOne:19
>>>>>>>testPlusSelectOneWithLambda:104
>>>>>>>testPlusSelectOne:98
---------------
>>>>>>>testFlexSelectOne:15
>>>>>>>testPlusSelectOneWithLambda:94
>>>>>>>testPlusSelectOne:95
---------------
>>>>>>>testFlexSelectOne:16
>>>>>>>testPlusSelectOneWithLambda:90
>>>>>>>testPlusSelectOne:87
---------------
>>>>>>>testFlexSelectOne:15
>>>>>>>testPlusSelectOneWithLambda:93
>>>>>>>testPlusSelectOne:55
---------------
>>>>>>>testFlexSelectOne:10
>>>>>>>testPlusSelectOneWithLambda:60
>>>>>>>testPlusSelectOne:48
---------------
>>>>>>>testFlexSelectOne:8
>>>>>>>testPlusSelectOneWithLambda:54
>>>>>>>testPlusSelectOne:51
---------------
>>>>>>>testFlexSelectOne:8
>>>>>>>testPlusSelectOneWithLambda:57
>>>>>>>testPlusSelectOne:56
---------------
>>>>>>>testFlexSelectOne:9
>>>>>>>testPlusSelectOneWithLambda:69
>>>>>>>testPlusSelectOne:55
---------------
>>>>>>>testFlexSelectOne:7
>>>>>>>testPlusSelectOneWithLambda:56
>>>>>>>testPlusSelectOne:55
 

查询 List 数据,限制 10 条

Mybatis-Flex 的性能大概是 Mybatis-Plus 的 5 倍左右

---------------
>>>>>>>testFlexSelectTop10:12
>>>>>>>testPlusSelectTop10WithLambda:56
>>>>>>>testPlusSelectTop10:53
---------------
>>>>>>>testFlexSelectTop10:10
>>>>>>>testPlusSelectTop10WithLambda:57
>>>>>>>testPlusSelectTop10:56
---------------
>>>>>>>testFlexSelectTop10:9
>>>>>>>testPlusSelectTop10WithLambda:51
>>>>>>>testPlusSelectTop10:47
---------------
>>>>>>>testFlexSelectTop10:9
>>>>>>>testPlusSelectTop10WithLambda:50
>>>>>>>testPlusSelectTop10:48
---------------
>>>>>>>testFlexSelectTop10:8
>>>>>>>testPlusSelectTop10WithLambda:51
>>>>>>>testPlusSelectTop10:47
---------------
>>>>>>>testFlexSelectTop10:9
>>>>>>>testPlusSelectTop10WithLambda:50
>>>>>>>testPlusSelectTop10:47
---------------
>>>>>>>testFlexSelectTop10:8
>>>>>>>testPlusSelectTop10WithLambda:50
>>>>>>>testPlusSelectTop10:49
---------------
>>>>>>>testFlexSelectTop10:7
>>>>>>>testPlusSelectTop10WithLambda:50
>>>>>>>testPlusSelectTop10:47
---------------
>>>>>>>testFlexSelectTop10:6
>>>>>>>testPlusSelectTop10WithLambda:46
>>>>>>>testPlusSelectTop10:49
---------------
>>>>>>>testFlexSelectTop10:8
>>>>>>>testPlusSelectTop10WithLambda:48
>>>>>>>testPlusSelectTop10:77
 

分页查询

Mybatis-Flex 的性能大概是 Mybatis-Plus 的 3~5 倍左右

---------------
>>>>>>>testFlexPaginate:63
>>>>>>>testPlusPaginate:181
---------------
>>>>>>>testFlexPaginate:47
>>>>>>>testPlusPaginate:197
---------------
>>>>>>>testFlexPaginate:37
>>>>>>>testPlusPaginate:115
---------------
>>>>>>>testFlexPaginate:31
>>>>>>>testPlusPaginate:113
---------------
>>>>>>>testFlexPaginate:29
>>>>>>>testPlusPaginate:103
---------------
>>>>>>>testFlexPaginate:27
>>>>>>>testPlusPaginate:111
---------------
>>>>>>>testFlexPaginate:24
>>>>>>>testPlusPaginate:102
---------------
>>>>>>>testFlexPaginate:23
>>>>>>>testPlusPaginate:102
---------------
>>>>>>>testFlexPaginate:23
>>>>>>>testPlusPaginate:104
---------------
>>>>>>>testFlexPaginate:21
>>>>>>>testPlusPaginate:101
 

数据更新

Mybatis-Flex 的性能大概是 Mybatis-Plus 的 5~10 倍左右。

---------------
>>>>>>>testFlexUpdate:11
>>>>>>>testPlusUpdate:61
---------------
>>>>>>>testFlexUpdate:10
>>>>>>>testPlusUpdate:49
---------------
>>>>>>>testFlexUpdate:6
>>>>>>>testPlusUpdate:39
---------------
>>>>>>>testFlexUpdate:5
>>>>>>>testPlusUpdate:40
---------------
>>>>>>>testFlexUpdate:5
>>>>>>>testPlusUpdate:36
---------------
>>>>>>>testFlexUpdate:5
>>>>>>>testPlusUpdate:34
---------------
>>>>>>>testFlexUpdate:6
>>>>>>>testPlusUpdate:33
---------------
>>>>>>>testFlexUpdate:4
>>>>>>>testPlusUpdate:32
---------------
>>>>>>>testFlexUpdate:4
>>>>>>>testPlusUpdate:34
---------------
>>>>>>>testFlexUpdate:5
>>>>>>>testPlusUpdate:32

相关测试源码放在 gitee 上:https://gitee.com/mybatis-flex/mybatis-benchmark ,大家可以自己运行测试源码查看自己的运行结果。

 

以下是 Mybaits-Flex 和 Mybaits-Plus 以及 阿里云云效团队的 Fluent-Mybatis 的一些功能对比:

功能或特点 MyBatis-Flex MyBatis-Plus Fluent-Mybatis
对 entity 的基本增删改查
分页查询
分页查询之总量缓存
分页查询无 SQL 解析设计(更轻量,及更高性能)
多表查询: from 多张表
多表查询: left join、inner join 等等
多表查询: union,union all
单主键配置
多种 id 生成策略
支持多主键、复合主键
字段的 typeHandler 配置
除了 Mybatis,无其他第三方依赖(更轻量)
QueryWrapper 是否支持在微服务项目下进行 RPC 传输 未知
逻辑删除
乐观锁
SQL 审计
数据填充 ✔️ (收费)
数据脱敏 ✔️ (收费)
字段权限 ✔️ (收费)
字段加密 ✔️ (收费)
字典回显 ✔️ (收费)
Db + Row
Entity 监听
多数据源支持 借助其他框架或收费,不支持非Spring项目
多租户

更多对比细节请移步:https://mybatis-flex.com/zh/comparison.html

进一步了解 MyBatis-Flex 框架,请参考一下链接:

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/236529/mybatis-flex-1-1-0-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。