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 框架,请参考一下链接:
- 1、快速开始:https://mybatis-flex.com/zh/getting-started.html
- 2、强大的 QueryWrapper:https://mybatis-flex.com/zh/querywrapper.html
- 3、逻辑删除:https://mybatis-flex.com/zh/logic_delete.html
- 4、乐观锁:https://mybatis-flex.com/zh/version.html
- 5、数据填充:https://mybatis-flex.com/zh/fill.html
- 6、数据脱敏:https://mybatis-flex.com/zh/mask.html
- 7、SQL 审计:https://mybatis-flex.com/zh/audit.html
- 8、多数据源:https://mybatis-flex.com/zh/multi-datasource.html
- 9、多租户:https://mybatis-flex.com/zh/multi-tenancy.html
- 10、更多企业级的功能正在路上:https://mybatis-flex.com
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
禅道 OpenAI 插件 1.1 版本来啦,新增 GPT 的任务和 Bug 润色功能!
昨日我们发布了包含ChatGPT 聊天框(神奇海螺)和需求润色功能的禅道OpenAI插件1.0版本,广受大家欢迎。今天,最新版本1.1发布,新增任务和Bug的润色功能,还修复了权限及图片展示的问题,大家可以更方便、更顺畅地使用OpenAI插件啦! 任务润色 在执行-任务功能下,GPT可帮助团队成员进行任务的润色、完善和优化。 它可以: 将任务标题、任务描述转换得更为清晰、具体; 将原有语句转换得更符合语法规则; 转换后不合适的需求可以进行重新转换,直到满意为止; 可以根据转换后的内容再度调整原有任务描述,重新转换。 Bug润色 在测试-Bug功能下,在执行-任务功能下,GPT可帮助测试人员进行Bug的合理优化。 它可以: 将Bug标题描述转换得更为清晰、具体,并符合语法规则; 将Bug的复现步骤和期望分解为步骤、结构、期望三个更为清晰的结构; 转换后不合适的Bug可以进行重新转换,直到满意为止; 可以根据转换后的内容再度调整原有Bug描述、复现步骤和期望,重新转换。 插件安装和配置 下载地址:https://www.zentao.net/extension-viewExt-218.ht...
- 下一篇
首个 Go 零代码单测 unitauto-go 1.0 正式版,UnitAuto 的 Go 语言实现
UnitAuto - 机器学习零代码单元测试平台 机器学习单元测试平台,零代码、全方位、自动化 测试 方法 / 函数 的正确性、可用性和性能。 腾讯 IEG (互动娱乐事业群)、WXG (微信事业群) 两大事业群多个部门的多个项目以及快手广告使用中。 已被 互联网教育智能技术及应用国家工程实验室 收录。 特点优势 相比 JUnit, JTest, Mockito, Mockk 等一堆 Compiling testing 工具: 1.其它工具需要每个方法都写一大堆测试代码,需要开发成本、需要解决测试代码的 bug、业务代码更改后需要同步修改测试代码等; UnitAuto 不需要写任何代码,直接读取方法的属性,自动注入参数,拿到返回值和类成员变量,机器学习零代码自动化断言。 2.UnitAuto 这种 Runtime testing 工具无需 Mock 环境(Application, Context 等), 更不用为 无法有效地 Mock 环境相关类、第三方登录未提供 Mock 支持 等而头疼, 只要被测方法满足 有 return 值、有 interface 回调、改变成员变量 field...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16