您现在的位置是:首页 > 文章详情

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

日期:2023-04-12点击:795

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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章