MyBatis-Flex 学习与整理
MyBatis-Flex 学习与整理
官网文档:https://mybatis-flex.com/
一、简介
Mybatis-Flex 是一个优雅、轻量且高性能的 Mybatis 增强框架。它不仅能轻松连接各种数据库,还内置了强大的 QueryWrapper,极大减少 SQL 编写工作,降低出错概率。通过 MyBatis-Flex,我们可以提高开发效率和体验,将更多精力投入业务开发。
二、特点
1. 轻量
- 无第三方依赖:除了 MyBatis 本身,无其它依赖。
- 无拦截器设计:通过 SqlProvider 实现,不依赖拦截器。
- 无 SQL 解析过程:执行过程中无需 SQL Parse。
- 优点:
- 极高性能
- 代码跟踪、调试更容易
- 更高的可控性
2. 灵活
- 支持 Entity 的增删改查、分页查询。
- 提供 Db + Row 工具,无需实体类即可操作数据库。
- 内置 QueryWrapper,轻松实现多表查询、连接查询、子查询等场景。
3. 强大
- 支持所有主流关系型数据库,可通过方言扩展更多类型。
- 支持多主键、逻辑删除、乐观锁、数据脱敏、数据审计、数据填充等高级功能。
三、与同类框架对比
功能/特点 | MyBatis-Flex | MyBatis-Plus | Fluent-MyBatis |
---|---|---|---|
Entity 基本增删改查 | ✅ | ✅ | ✅ |
分页查询 | ✅ | ✅ | ✅ |
分页查询总量缓存 | ✅ | ✅ | ❌ |
无 SQL 解析设计 | ✅ | ❌ | ✅ |
多表查询 from | ✅ | ❌ | ❌ |
多表查询 join | ✅ | ❌ | ✅ |
多表查询 union | ✅ | ❌ | ✅ |
多主键/复合主键 | ✅ | ❌ | ❌ |
字段 typeHandler | ✅ | ✅ | ✅ |
除 MyBatis 无依赖 | ✅ | ❌ | ❌ |
QueryWrapper RPC传输 | ✅ | ❌ | 未知 |
逻辑删除 | ✅ | ✅ | ✅ |
乐观锁 | ✅ | ✅ | ✅ |
SQL审计 | ✅ | ❌ | ❌ |
数据填充 | ✅ | ✔️(收费) | ✅ |
数据脱敏 | ✅ | ✔️(收费) | ❌ |
字段权限/加密/字典回写 | ✅ | ✔️(收费) | ❌ |
Db + Row | ✅ | ❌ | ❌ |
Entity监听 | ✅ | ❌ | ❌ |
多数据源支持 | ✅ | 需其它框架/收费 | ❌ |
多租户/动态表名/schema | ✅ | ✅/❌ | ❌ |
性能对比
- 查询单条数据速度约为 MyBatis-Plus 的 5~10+ 倍
- 查询 10 条数据速度约为 MyBatis-Plus 的 5~10 倍
- 分页查询速度约为 MyBatis-Plus 的 5~10 倍
- 数据更新速度约为 MyBatis-Plus 的 5~10+ 倍
详细性能测试
四、支持的数据库类型
数据库 | 描述 |
---|---|
mysql | MySQL 数据库 |
mariadb | MariaDB 数据库 |
oracle | Oracle11g及以下数据库 |
oracle12c | Oracle12c及以上数据库 |
db2 | DB2 数据库 |
hsql | HSQL 数据库 |
sqlite | SQLite 数据库 |
postgresql | PostgreSQL 数据库 |
sqlserver | SQLServer 数据库 |
dm | 达梦数据库 |
xugu | 虚谷数据库 |
kingbasees | 人大金仓数据库 |
… | 详见官网文档 |
可通过自定义方言持续扩展更多数据库支持。
五、快速开始
Step 1:创建数据库表
-- 创建数据库
CREATE DATABASE IF NOT EXISTS testdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 使用数据库
USE testdb;-- 创建 user 表
CREATE TABLE IF NOT EXISTS user (id BIGINT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age INT
);INSERT INTO tb_account(id, user_name, age, birthday)
VALUES (1, '张三', 18, '2020-01-11'),(2, '李四', 19, '2021-03-21');
Step 2:创建 Spring Boot 项目并添加 Maven 依赖
可使用 Spring Initializer 快速初始化。
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${spring-boot.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId><version>${spring-boot.version}</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency><dependency><groupId>com.mybatis-flex</groupId><artifactId>mybatis-flex-spring-boot-starter</artifactId><version>${mybatis-flex.version}</version></dependency></dependencies>
Step 3:Spring Boot 项目配置
在 application.properties
配置数据源:
spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Drivermybatis-flex.mapper-locations=classpath:mapper/*.xml
mybatis-flex.type-aliases-package=com.example.demo.entity
六、总结
MyBatis-Flex 是 MyBatis 的增强版,几乎集成了 MyBatis-Plus、jOOQ、Fluent-Mybatis 的所有优点,值得开发者深入探索。
- 官方网站