news 2026/4/18 14:20:25

MyBatis-Flex来了!完爆MyBatis-Plus?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MyBatis-Flex来了!完爆MyBatis-Plus?

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

总而言之,MyBatis-Flex 能够极大地提高我们的开发效率和开发体验,让我们有更多的时间专注于自己的事情。

官网文档:https://mybatis-flex.com/

01

Mybatis-Flex的有什么特点?

轻量:

除了 MyBatis,没有任何第三方依赖轻依赖、没有任何拦截器,其原理是通过 SqlProvider 的方式实现的轻实现。同时,在执行的过程中,没有任何的 Sql 解析(Parse)轻运行。这带来了几个好处:

1、极高的性能;

2、极易对代码进行跟踪和调试;

3、把控性更高。

如果你近期准备面试跳槽,建议在ddkk.com在线刷题,涵盖 一万+ 道 Java 面试题,几乎覆盖了所有主流技术面试题,还有市面上最全的技术五百套,精品系列教程,免费提供。

灵活:

支持 Entity 的增删改查、以及分页查询的同时,Mybatis-Flex 提供了 Db + Row^灵活 工具,可以无需实体类对数据库进行增删改查以及分页查询。与此同时,Mybatis-Flex 内置的 QueryWrapper^灵活 可以轻易的帮助我们实现 多表查询、链接查询、子查询 等等常见的 SQL 场景。

强大:

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

02

Mybatis-Flex和同类框架对比

1)功能对比:

2)性能对比:

这里直接贴测试结果:

  • 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://mybatis-flex.com/zh/intro/benchmark.html

03

Mybatis-Flex支持的数据库类型

MyBatis-Flex 支持的数据库类型,如下表格所示,我们还可以通过自定义方言的方式,持续添加更多的数据库支持。

04

快速开始

第 1 步:创建数据库表

CREATETABLEIFNOTEXISTS`tb_account` ( `id` INTEGER PRIMARY KEY auto_increment, `user_name`VARCHAR(100), `age` INTEGER, `birthday` DATETIME ); INSERTINTO tb_account(id, user_name, age, birthday) VALUES(1, '张三', 18, '2020-01-11'), (2, '李四', 19, '2021-03-21');

第 2 步:创建 Spring Boot 项目,并添加 Maven 依赖

TIP:可以使用 Spring Initializer 快速初始化一个 Spring Boot 工程。

需要添加的 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> <!-- 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 中配置数据源:

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

在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:

@SpringBootApplication @MapperScan("com.mybatisflex.test.mapper") publicclassMybatisFlexTestApplication{ publicstaticvoidmain(String[] args){ SpringApplication.run(MybatisFlexTestApplication.class, args); } }

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

这里使用了 Lombok 来简化代码。

@Data @Table("tb_account") publicclassAccount{ @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 接口:

publicinterfaceAccountMapperextendsBaseMapper<Account> { }

这部分也可以使用 MyBatis-Flex 的代码生成器来生,功能非常强大的。详情进入:

https://mybatis-flex.com/zh/others/codegen.html

第 5 步:开始使用

添加测试类,进行功能测试:

importstatic com.mybatisflex.test.entity.table.AccountTableDef.ACCOUNT; @SpringBootTest classMybatisFlexTestApplicationTests{ @Autowired private AccountMapper accountMapper; @Test voidcontextLoads(){ 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 1100:00:00 CST 2020)

以上的 示例 中, ACCOUNT 为 MyBatis-Flex 通过 APT 自动生成,只需通过静态导入即可,无需手动编码。

整体来讲,这个框架是Mybatis的增强版,几乎集成了mybatis plus、jooq、fluent mybatis的所有优点,大家可以探索一番。

官方网站:https://mybatis-flex.com

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:05:02

自己写一个分布式定时任务框架+负载均衡+OpenAPI异步调用!

项目背景目前的定时任务框架已经很成熟&#xff0c;从QuartZ到xxl-job&#xff0c;再到近几年出现的PowerJob&#xff0c;既然有这么多的好的实现&#xff0c;为什么还是选择重写一个定时任务框架呢&#xff1f;开发中遇到这样的场景&#xff0c;业务层面需要频繁的创建修改定时…

作者头像 李华
网站建设 2026/4/17 18:15:30

大数据情感分析:助力在线社交平台的安全管理

大数据情感分析:助力在线社交平台的安全管理 关键词:大数据、情感分析、自然语言处理、社交平台安全、文本分类 摘要:社交平台每天产生数亿条用户内容,如何快速识别有害信息(如网络暴力、诈骗、极端言论)成为安全管理的核心挑战。本文将从“情感分析”这一核心技术出发,…

作者头像 李华
网站建设 2026/4/17 16:08:24

电缆敷设施工机械-哪个品牌的电缆输送机好用

哪个品牌的电缆输送机好用&#xff1f;在电力、通信等基建工程中&#xff0c;电缆输送机的品牌选择&#xff0c;远不止于比较单一参数。这本质上是对设备背后技术可靠性、工程适配性与长期服务价值的综合考量。一个优秀的品牌&#xff0c;意味着其产品能深度融入多样化的施工场…

作者头像 李华
网站建设 2026/4/18 5:42:04

人工智能标注工程师证书:超越标注之框,赋能技能跃迁

在人工智能迅速发展的今天&#xff0c;标注工程师这个职业角色正在悄然发生转变。曾经&#xff0c;我们被称为“数据标注师”&#xff0c;任务是机械地画框、分类、打标签。但人工智能的出现&#xff0c;推动标注工程师职业发生深刻的变化&#xff0c;因此&#xff0c;这也为我…

作者头像 李华
网站建设 2026/4/18 13:34:25

提示词工程vs上下文工程:AI交互方法论全解析(值得收藏)

本文探讨了从提示词工程到上下文技术的演进&#xff0c;分析了精简提示词设计、上下文管理的重要性及方法(压缩、结构化笔记、多智能体)。作者认为当前AI技术方案灵感源于人类认知世界的方式&#xff0c;强调应"回到事情本身"&#xff0c;围绕"人"的核心需…

作者头像 李华