更轻量、更灵活、以及更高的性能。Mybatis-Plus相信大家都在用,但是今天要推荐的是功能更强大的MyBatis-Flex。
◆
简
介
MyBatis-Flex 是一个优雅的 MyBatis 增强框架,具有轻量、高性能和灵活的特点。通过 MyBatis-Flex,我们可以轻松连接到各种数据库,并利用其内置的 QueryWrapper 大大减少了编写 SQL 的工作量,同时降低了出错的风险。
◆
特征
1、轻量
除了 MyBatis,没有任何第三方依赖轻依赖、没有任何拦截器,其原理是通过 SqlProvider 的方式实现的轻实现。同时,在执行的过程中,没有任何的 Sql 解析(Parse)轻运行。 这带来了几个好处:1、极高的性能;2、极易对代码进行跟踪和调试; 3、更高的把控性。
2、灵活
支持 Entity 的增删改查、以及分页查询的同时,MyBatis-Flex 提供了 Db + Row^灵活 工具,可以无需实体类对数据库进行增删改查以及分页查询。 与此同时,MyBatis-Flex 内置的 QueryWrapper^灵活 可以轻易的帮助我们实现
多表查询
、
链接查询
、
子查询
等等常见的 SQL 场景。
3、强大
支持任意关系型数据库,还可以通过方言持续扩展,同时支持 多(复合)主键、逻辑删除、乐观锁配置、数据脱敏、数据审计、 数据填充 等等功能。
◆
MyBatis-Flex 和同类框架「功能」对比
MyBatis-Flex 主要是和
MyBatis-Plus
与
Fluent-MyBatis
对比,内容来源其官网、git 或者 网络文章,若有错误欢迎纠正。
功能或特点
|
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 的事务管理,比如 @Transactional 和 TransactionTemplate 等
|
✅
|
❌
|
❌
|
多数据源是否支持 "非Spring" 项目
|
✅
|
❌
|
❌
|
多租户
|
✅
|
✅
|
❌
|
动态表名
|
✅
|
✅
|
❌
|
动态 Schema
|
✅
|
❌
|
❌
|
◆
MyBatis-Flex 和同类框架「性能」对比
测试方法
使用 h2 数据库,在初始化的时候分别为 mybatis-flex 和 mybatis-plus 创建两个不同的数据库, 但是完全一样的数据结构、数据内容和数据量(每个库 2w 条数据)。
开始之前先进行预热,之后通过打印时间戳的方式进行对比,谁消耗的时间越少,则性能越高(每次测试 10 轮)。
◆
这里直接贴测试结果:
-
MyBatis-Flex 的查询单条数据的速度,大概是 MyBatis-Plus 的 5 ~ 10+ 倍。
-
MyBatis-Flex 的查询 10 条数据的速度,大概是 MyBatis-Plus 的 5~10 倍左右。
-
Mybatis-Flex 的分页查询速度,大概是 Mybatis-Plus 的 5~10 倍左右。
-
Mybatis-Flex 的数据更新速度,大概是 Mybatis-Plus 的 5~10+ 倍。
测试源码:
https://gitee.com/mybatis-flex/mybatis-benchmark
具体性能对比测试,移步:
https://mybatis-flex.com/zh/intro/benchmark.html
◆
MyBatis-Flex 支持的数据库类型
MyBatis-Flex 支持的数据库类型,如下表格所示,我们还可以通过自定义方言的方式,持续添加更多的数据库支持。
数据库
|
描述
|
mysql
|
MySQL 数据库
|
mariadb
|
MariaDB 数据库
|
oracle
|
Oracle11g 及以下数据库
|
oracle12c
|
Oracle12c 及以上数据库
|
db2
|
DB2 数据库
|
H2
|
H2 数据库
|
hsql
|
HSQL 数据库
|
sqlite
|
SQLite 数据库
|
postgresql
|
PostgreSQL 数据库
|
sqlserver2005
|
SQLServer2005 数据库
|
sqlserver
|
SQLServer 数据库
|
dm
|
达梦数据库
|
xugu
|
虚谷数据库
|
kingbasees
|
人大金仓数据库
|
phoenix
|
Phoenix HBase 数据库
|
gauss
|
Gauss 数据库
|
clickhouse
|
ClickHouse 数据库
|
gbase
|
南大通用(华库)数据库
|
gbase-8s
|
南大通用数据库 GBase 8s
|
oscar
|
神通数据库
|
sybase
|
Sybase ASE 数据库
|
OceanBase
|
OceanBase 数据库
|
Firebird
|