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

975

积分

0

好友

139

主题
发表于 前天 04:09 | 查看: 7| 回复: 0

Mybatis-Flex 是一个优雅的 Mybatis 增强框架,它非常轻量,同时拥有极高的性能与灵活性。我们可以轻松地使用 MyBatis-Flex 连接任何数据库,其内置的 QueryWrapper 帮助我们极大地减少了 SQL 编写的工作量,同时也降低了出错的可能性。

总的来说,MyBatis-Flex 能够有效提升开发效率和开发体验。

Mybatis-Flex的核心特点

1、轻量
除了 MyBatis 核心,没有任何第三方依赖,其原理是通过 SqlProvider 实现。同时,在执行过程中没有 SQL 解析(Parse)步骤。这带来了几个显著优势:

  • 极高的性能
  • 代码极易跟踪和调试
  • 对流程的把控性更高

2、灵活
在支持 Entity 的增删改查及分页查询的同时,Mybatis-Flex 提供了 Db + Row 工具,可以无需实体类直接对数据库进行操作。此外,其内置的 QueryWrapper 能够轻松实现多表查询、连接查询、子查询等复杂 SQL 场景。

3、功能强大
支持任意关系型数据库,并可通过方言持续扩展。同时内置支持多(复合)主键、逻辑删除、乐观锁配置、数据脱敏、数据审计、数据填充等诸多企业级功能。

Mybatis-Flex与同类框架对比

1)功能对比

功能或特点 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 事务管理
多数据源支持 “非Spring” 项目
多租户
动态表名
动态 Schema

2)性能对比

根据官方基准测试结果:

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

具体性能对比测试,可查阅官方基准测试文档

Mybatis-Flex支持的数据库类型

MyBatis-Flex 支持丰富的数据库类型,并可通过自定义方言持续扩展。目前已支持包括 MySQL、Oracle、PostgreSQL、SQL Server、达梦、人大金仓、OceanBase、TDengine 等在内的数十种数据库。

快速开始

第 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 项目,并添加 Maven 依赖
可以使用 Spring Initializer 快速初始化一个 Spring Boot 工程。主要依赖示例如下:

<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>
    <!-- for test only -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

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

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

在 Spring Boot 启动类中添加 @MapperScan 注解:

@SpringBootApplication
@MapperScan("com.mybatisflex.test.mapper")
public class MybatisFlexTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisFlexTestApplication.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;
}
  • @Table("tb_account") 设置实体类与表名的映射关系。
  • @Id(keyType = KeyType.Auto) 标识主键为自增。

Mapper 接口继承 BaseMapper:

public interface AccountMapper extends BaseMapper<Account> {}

这部分也可以使用 MyBatis-Flex 强大的代码生成器自动生成。

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

示例中的 ACCOUNT 为 MyBatis-Flex 通过 APT 自动生成,通过静态导入即可使用。

MyBatis-Flex 作为一款现代化的 MyBatis 增强框架,集成了诸多优秀特性,在保持轻量和高性能的同时,提供了极大的开发灵活性,值得在项目中深入探索和应用。更多详细信息请访问官方网站




上一篇:美团全栈化实践解析:AI时代前后端融合的技术趋势与应对策略
下一篇:Pop!_OS 24.04 LTS发布:全球首个基于Rust的COSMIC桌面环境深度体验
您需要登录后才可以回帖 登录 | 立即注册

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

GMT+8, 2025-12-17 17:28 , Processed in 0.109639 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

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