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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1184695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

25年的关键词:失业、工伤、外包、投资回血……

引言 「2025」 年就这么稀里糊涂的过去咯, 前不久正巧听到播客不禁感慨, 于世界而言「2025」这一年属实精彩: 年初的 Deepseek、宇树机器人爆火特朗普上台后各种折腾, 关税战一度引起全球股市暴跌, 而最后又好像啥也没发生一样后面泡泡马特爆火、小红书出圈...之后又有雷军塌…

即插即用系列 | CVPR 2025 CATANet:一种用于轻量级图像超分辨率的高效内容感知 Token 聚合网络

论文题目&#xff1a;CATANet: Efficient Content-Aware Token Aggregation for Lightweight Image Super-Resolution 论文原文 (Paper)&#xff1a;https://arxiv.org/abs/2503.06896 官方代码 (Code)&#xff1a;https://github.com/EquationWalker/CATANet GitHub 仓库链接&…

牛掰,MySQL 8.2 支持读写分离了!

MySQL InnoDB ReplicaSet启动 MySQL Router 8.2结论我们一直在等待的 MySQL 读/写分离功能 现在终于可以使用了&#xff01;在规模上&#xff0c;我们在副本之间分配读取&#xff0c;但这必须在应用程序中以某种方式进行管理&#xff1a;指向在某个地方写入并在其他地方读取。在…

【PFJSP问题】自适应双种群协同鸡群算法ADPCCSO求解置换流水车间调度问题PFSP【含Matlab源码 14995期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab武动乾坤博客之家&#x1f49e;…

洛谷 P3746 [六省联考 2017] 组合数问题

题目链接 题目求 \(\displaystyle \sum _ {i = 0} [x ^ {ik + r}] (1 + x) ^ {nk}\),定义多项式的循环卷积为两个多项式相乘后,把所有 \(x ^ i\) 的项合并到 \(x ^ {i \bmod k}\)。快速幂加速即可。 时间复杂度 \(\t…

公司弃用 Nginx,选择这款工具!

Cloudflare 公司宣布弃用 nginx&#xff0c;转用自研的新一代方向代理服务 Pingora&#xff0c;并号称比nginx更快、更高效、更安全&#xff0c;下面通过 Cloudfare 官方网站的一篇文章来了解下 Pingora 比 Nginx 强在哪里&#xff1f;简介今天&#xff0c;我们很高兴有机会在此…

【DPFSP问题】自适应双种群协同鸡群算法ADPCCSO求解分布式置换流水车间调度DPFSP【含Matlab源码 14996期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab武动乾坤博客之家&#x1f49e;…

洛谷 P3747 [六省联考 2017] 相逢是问候

题目链接 欧拉降幂最多只会迭代到第 \(k = \text O (\log p)\) 次模数就会变成 \(1\)(证明见这里)。故一个数被操作超过 \(k\) 次就会变为一个定值。 于是用线段树维护出操作还没有满 \(k\) 次的位置,每次暴力修改并…

Gemini 336L - 调试记录(Ubuntu 24.04)

按照Readme安装ROS2 SDK:https://github.com/orbbec/OrbbecSDK_ROS2/tree/v2-main开启ROS2自动补全:eval "$(register-python-argcomplete ros2)" eval "$(register-python-argcomplete colcon)"…

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

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

深入解析:从C++开始的编程生活(16)——继承

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

13.6B参数铸就“世界模型”,美团LongCat-Video搭建5分钟原生视频生成,定义AI视频新标杆

13.6B参数铸就“世界模型”,美团LongCat-Video搭建5分钟原生视频生成,定义AI视频新标杆pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importan…

NodeJS生产环境发布流程

NodeJS生产环境发布流程1、创建宝塔的容器时,先把命令设置为sleep infinity,使用npm将依赖安装完后再改为node /app/server.js2,如果.env不生效,则直接在容器的环境变量里设置3、容器数据库里的端口应该设置为3306…

怎样免费在线把 HEIC 转为 JPG?无需安装软件,也不用上传照片

如果你用 iPhone 拍照,可能已经注意到一个新格式:HEIC。它画质高、文件小,而且在苹果设备上支持良好。但在日常使用中,你可能会遇到不少麻烦。1️⃣ HEIC 的最大问题:兼容性不足 虽然 HEIC 技术先进,但在非苹果环…

2026年趋势全景图:AI重塑技术与翻译行业,这些变化你必须知道!

哈喽,大家好!2026年已至,最近不少机构都发布了年度趋势报告——从IBM聚焦的企业战略,到CSA Research关注的翻译行业,再到BOL News、CSDN拆解的技术革新,每一份报告都在告诉我们:这一年,“不确定性”会是常态,但“机遇”也藏在每一个变革节点里。 今天这篇博客,我就整…

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

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

考完PMP这几件事一定要做!

各位刚查到 PMP 成绩的小伙伴们&#xff0c;恭喜大家顺利通关呀&#xff01;学长知道你们现在肯定又激动又迷茫&#xff0c;拿到证书只是第一步&#xff0c;怎么让它真正成为职业路上的 “硬通货” 才是关键&#xff5e; 2026 年各地政策福利又升级了&#xff0c;这 4 件事抓紧…

竞品关键词实战指南:从挖掘到落地,抢占搜索流量高地

在当今的数字营销领域&#xff0c;搜索流量是品牌获取曝光、转化客户的核心阵地之一。而竞品关键词&#xff0c;作为已经在市场中被验证有效的搜索术语&#xff0c;就像一把打开流量宝库的钥匙。它们不仅能帮助我们洞悉用户需求、发现内容漏洞&#xff0c;更能让我们在自然搜索…

应届生找工作选Java后端方向!未来发展路线该如何走?未来职业发展怎么走?

&#xfeff;应届生找工作选Java后端方向&#xff01;未来发展路线该如何走?未来职业发展怎么走&#xff1f; 应届生选择Java后端方向是个明智的选择&#xff01;以下是我为你梳理的清晰发展路线&#xff0c;分阶段帮你规划职业成长&#xff1a; 一、入门阶段&#xff08;0-2…

深入解析Excel数组:从基础概念到高阶应用的完全指南

数组是Excel函数进阶的钥匙&#xff0c;掌握数组运算逻辑能让你的数据处理能力提升一个维度。 一、理解数组&#xff1a;Excel中的“数据容器” 数组是Excel中最强大的概念之一&#xff0c;它允许你将多个值作为一个整体来处理。本质上&#xff0c;数组就是一个有序的数据集合…