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

1709

积分

1

好友

242

主题
发表于 5 天前 | 查看: 15| 回复: 0

Mybatis-Flex 是一个优雅的 Mybatis 增强框架,它非常轻量,同时拥有极高的性能与灵活性。使用 MyBatis-Flex 可以轻松连接各种数据库,其内置的 QueryWrapper 能极大减少 SQL 编写工作量并降低出错概率,从而显著提升开发效率和开发体验。

Mybatis-Flex的核心特点

1. 轻量
除了 MyBatis 核心,框架没有任何第三方依赖,其增强功能通过 SqlProvider 方式实现,运行时无需进行 SQL 解析。这带来了三大优势:极高的执行性能;便于代码跟踪与调试;对底层 SQL 有更强的把控力。

2. 灵活
框架不仅支持基于 Entity 的增删改查与分页查询,还提供了 Db + Row 工具,支持无需实体类直接操作数据库。同时,内置的 QueryWrapper 可以轻松构建多表查询、连接查询、子查询等复杂 SQL 场景。

3. 功能强大
支持几乎所有主流关系型数据库,并可通过方言扩展。框架内置支持多主键/复合主键、逻辑删除、乐观锁、数据脱敏、数据审计、数据填充等诸多企业级特性。

Mybatis-Flex 与同类框架功能对比

功能或特点 MyBatis-Flex MyBatis-Plus Fluent-MyBatis
对 entity 的基本增删改查
分页查询
分页查询无 SQL 解析设计
多表查询:from 多张表
多表查询:left join、inner join 等
支持多主键、复合主键
除了 MyBatis,无其他第三方依赖
逻辑删除
乐观锁
SQL 审计
数据脱敏 ✔️(收费)
Db + Row 工具
多数据源支持(支持 Spring 事务) 借助其他框架或收费

性能对比简述

根据官方基准测试,在常见的 CURD 操作中,MyBatis-Flex 相比 MyBatis-Plus 展现出显著的性能优势:

  • 查询单条数据速度约为其 5 ~ 10+ 倍
  • 查询10条数据速度约为其 5 ~ 10 倍
  • 分页查询速度约为其 5 ~ 10 倍
  • 数据更新速度约为其 5 ~ 10+ 倍

具体性能测试数据与细节,请参阅 MyBatis-Flex 官方性能基准报告

支持的数据库类型

MyBatis-Flex 支持包括 MySQLPostgreSQLOracleSQL Server达梦人大金仓ClickHouse 等在内的数十种数据库,并可通过自定义方言持续扩展。

快速开始

第 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 步:创建 Spring Boot 项目并添加依赖
可以使用 Spring Initializer 快速初始化工程。在 pom.xml 中添加核心依赖:

<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>
    <!-- 其他依赖... -->
</dependencies>

第 3 步:配置 Spring Boot 项目
application.yml 中配置数据源:

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

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

@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

第 4 步:编写实体类与 Mapper 接口
使用 Lombok 简化实体类代码:

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

Mapper 接口继承 BaseMapper

public interface AccountMapper extends BaseMapper<Account> {
}

上述代码也可使用 MyBatis-Flex 强大的代码生成器自动生成。

第 5 步:进行功能测试
编写测试类,使用 QueryWrapper 进行查询:

import static com.example.entity.table.AccountTableDef.ACCOUNT;

@SpringBootTest
class ApplicationTests {
    @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(id=1, userName=张三, age=18, birthday=Sat Jan 11 00:00:00 CST 2020)

示例中的 ACCOUNT 为框架通过 APT 自动生成的表定义对象,通过静态导入即可使用,无需手动编码。

总结

MyBatis-Flex 作为一个现代化的 MyBatis 增强框架,融合了多种 ORM 工具的优点,在轻量性、灵活性和功能丰富性之间取得了良好平衡。其卓越的性能表现和简洁的 Spring Boot 集成方式,为开发者提供了高效、愉悦的 数据库 操作体验,非常适合在新项目中进行技术选型或对现有项目进行优化。




上一篇:Chrome插件多脚本通信开发实践:架构解析与跨进程消息传递
下一篇:9个现代浏览器API实战指南:大幅提升Web页面性能
您需要登录后才可以回帖 登录 | 立即注册

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

GMT+8, 2025-12-25 00:47 , Processed in 0.226683 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

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