找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1095

积分

0

好友

141

主题
发表于 2025-12-25 08:57:42 | 查看: 30| 回复: 0

在 Java 持久层框架领域,MyBatis 因其灵活性和对 SQL 的直接掌控而备受开发者喜爱。但在实际项目开发中,编写大量重复的 CRUD(增删改查)代码往往成为效率瓶颈。为此,一系列增强框架应运而生,而 MyBatis-Flex 以其优雅的设计、轻量的架构和卓越的性能,成为了一个值得关注的新选择。

MyBatis-Flex 的核心目标是提升开发效率与编码体验,让开发者能更专注于业务逻辑。它通过内置的 QueryWrapper 提供类型安全的查询构建方式,大幅减少了手写 SQL 的繁琐和潜在错误。同时,它完全兼容原生 MyBatis 的所有功能,真正做到了“只增强,不替代”。

MyBatis-Flex 架构示意

MyBatis-Flex 的核心特点

  1. 极致轻量:框架本身除了 MyBatis 外无任何第三方依赖,其增强功能通过 SqlProvider 实现,运行时无需 SQL 解析,从依赖到运行都保持轻量化。
  2. 功能灵活:全面支持多主键、复杂多表查询、逻辑删除、乐观锁、数据脱敏与加密、多数据源与分库分表、字段权限、多租户、SQL审计等大量企业级特性,且这些功能均为免费提供。
  3. 性能卓越:得益于独特的技术架构,MyBatis-Flex 在增删改查等核心操作上的性能,据测试可比同类框架高出数倍。
  4. 纯粹增强:在提供便捷的 CRUD、分页、批量操作的同时,绝不阉割或限制 MyBatis 原有的任何能力。

MyBatis-Flex 与同类框架对比

此处主要对比 MyBatis-PlusFluent-MyBatis

功能对比一览

功能或特点 MyBatis-Flex MyBatis-Plus Fluent-MyBatis
基础增删改查
分页查询
分页查询无SQL解析
多表查询(from多表)
多表查询(join操作)
支持多主键/复合主键
无第三方依赖(仅MyBatis)
QueryWrapper支持RPC传输 未知
逻辑删除、乐观锁
SQL审计
数据脱敏、字段加密 收费功能
字段权限 收费功能
多数据源支持 需借助其他框架
多租户

性能对比

根据官方提供的基准测试结果:

  • 单条数据查询速度,MyBatis-Flex 约为 MyBatis-Plus 的 5~10+ 倍。
  • 10条数据查询速度,约为 5~10 倍。
  • 分页查询速度,约为 5~10 倍。
  • 数据更新速度,约为 5~10+ 倍。

详细性能测试数据可参阅:MyBatis-Flex 性能基准测试报告

支持的数据库类型

MyBatis-Flex 支持广泛的数据库,并可通过自定义方言持续扩展。以下为部分支持的数据库列表:

  • MySQL, MariaDB
  • Oracle, PostgreSQL
  • SQL Server, DB2
  • 达梦(DM), 人大金仓(KingbaseES)
  • ClickHouse, OceanBase
  • 华为openGauss, TDengine
  • ...(更多数据库详见官方文档)

快速开始指南

下面通过一个简单的例子,展示如何在 Spring Boot 项目中集成 MyBatis-Flex。

第 1 步:创建示例表

CREATE TABLE IF NOT EXISTS `tb_account` (
    `id`        INTEGER PRIMARY KEY auto_increment,
    `user_name` VARCHAR(100),
    `age`       INTEGER,
    `birthday`  DATETIME
);
INSERT INTO tb_account(id, user_name, age, birthday)
VALUES (1, '张三', 18, '2020-01-11'),
       (2, '李四', 19, '2021-03-21');

第 2 步:添加 Maven 依赖

<dependencies>
    <dependency>
        <groupId>com.mybatis-flex</groupId>
        <artifactId>mybatis-flex-spring-boot-starter</artifactId>
        <version>1.5.3</version>
    </dependency>
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
    </dependency>
    <!-- 测试依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

第 3 步:配置应用
application.yml 中配置数据源:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/flex_test
    username: root
    password: 12345678

在启动类上添加 @MapperScan 注解扫描 Mapper。

第 4 步:编写实体类与 Mapper 接口

@Data
@Table("tb_account")
public class Account {
    @Id(keyType = KeyType.Auto)
    private Long id;
    private String userName;
    private Integer age;
    private Date birthday;
}

public interface AccountMapper extends BaseMapper<Account> {
}

第 5 步:进行查询测试

import static com.mybatisflex.test.entity.table.AccountTableDef.ACCOUNT;

@SpringBootTest
class MybatisFlexTestApplicationTests {
    @Autowired
    private AccountMapper accountMapper;

    @Test
    void testQuery() {
        QueryWrapper queryWrapper = QueryWrapper.create()
                .select()
                .where(ACCOUNT.AGE.eq(18));
        Account account = accountMapper.selectOneByQuery(queryWrapper);
        System.out.println(account);
    }
}

执行测试,控制台将输出查询到的实体信息。其中 ACCOUNT 为框架通过 APT 自动生成的表定义对象,无需手动编码。

总结

MyBatis-Flex 凭借其 轻量级设计、丰富的企业级功能、显著的性能优势 以及 “增强而非限制” 的理念,为 Java 持久层开发提供了新的高效选择。它免费提供了诸多其他框架需付费的高级特性,极大地简化了复杂场景下的开发工作。

如果你正在评估或寻找一个更现代、高性能的 MyBatis 增强方案,MyBatis-Flex 值得一试。

官方资源:




上一篇:基于React Hook Form与Zod的企业级表单方案:实现自动保存与校验状态持久化
下一篇:DMBOK数据治理体系解析:如何构建企业数据架构,解决数据失控本质
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-11 02:30 , Processed in 0.211451 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表