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
还没有评论,来说两句吧...