MyBatis-Flex 学习与整理

MyBatis-Flex 学习与整理

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

一、简介

Mybatis-Flex 是一个优雅、轻量且高性能的 Mybatis 增强框架。它不仅能轻松连接各种数据库,还内置了强大的 QueryWrapper,极大减少 SQL 编写工作,降低出错概率。通过 MyBatis-Flex,我们可以提高开发效率和体验,将更多精力投入业务开发。


二、特点

1. 轻量

  • 无第三方依赖:除了 MyBatis 本身,无其它依赖。
  • 无拦截器设计:通过 SqlProvider 实现,不依赖拦截器。
  • 无 SQL 解析过程:执行过程中无需 SQL Parse。
  • 优点
    • 极高性能
    • 代码跟踪、调试更容易
    • 更高的可控性

2. 灵活

  • 支持 Entity 的增删改查、分页查询。
  • 提供 Db + Row 工具,无需实体类即可操作数据库。
  • 内置 QueryWrapper,轻松实现多表查询、连接查询、子查询等场景。

3. 强大

  • 支持所有主流关系型数据库,可通过方言扩展更多类型。
  • 支持多主键、逻辑删除、乐观锁、数据脱敏、数据审计、数据填充等高级功能。

三、与同类框架对比

功能/特点MyBatis-FlexMyBatis-PlusFluent-MyBatis
Entity 基本增删改查
分页查询
分页查询总量缓存
无 SQL 解析设计
多表查询 from
多表查询 join
多表查询 union
多主键/复合主键
字段 typeHandler
除 MyBatis 无依赖
QueryWrapper RPC传输未知
逻辑删除
乐观锁
SQL审计
数据填充✔️(收费)
数据脱敏✔️(收费)
字段权限/加密/字典回写✔️(收费)
Db + Row
Entity监听
多数据源支持需其它框架/收费
多租户/动态表名/schema✅/❌

性能对比

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

详细性能测试


四、支持的数据库类型

数据库描述
mysqlMySQL 数据库
mariadbMariaDB 数据库
oracleOracle11g及以下数据库
oracle12cOracle12c及以上数据库
db2DB2 数据库
hsqlHSQL 数据库
sqliteSQLite 数据库
postgresqlPostgreSQL 数据库
sqlserverSQLServer 数据库
dm达梦数据库
xugu虚谷数据库
kingbasees人大金仓数据库
详见官网文档

可通过自定义方言持续扩展更多数据库支持。


五、快速开始

Step 1:创建数据库表

-- 创建数据库
CREATE DATABASE IF NOT EXISTS testdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 使用数据库
USE testdb;-- 创建 user 表
CREATE TABLE IF NOT EXISTS user (id BIGINT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age INT
);INSERT INTO tb_account(id, user_name, age, birthday)
VALUES (1, '张三', 18, '2020-01-11'),(2, '李四', 19, '2021-03-21');

Step 2:创建 Spring Boot 项目并添加 Maven 依赖

可使用 Spring Initializer 快速初始化。

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${spring-boot.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId><version>${spring-boot.version}</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency><dependency><groupId>com.mybatis-flex</groupId><artifactId>mybatis-flex-spring-boot-starter</artifactId><version>${mybatis-flex.version}</version></dependency></dependencies>

Step 3:Spring Boot 项目配置

application.properties 配置数据源:

spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Drivermybatis-flex.mapper-locations=classpath:mapper/*.xml
mybatis-flex.type-aliases-package=com.example.demo.entity 

六、总结

MyBatis-Flex 是 MyBatis 的增强版,几乎集成了 MyBatis-Plus、jOOQ、Fluent-Mybatis 的所有优点,值得开发者深入探索。

  • 官方网站

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

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

相关文章

Typecho插件开发:优化文章摘要处理短代码问题

文章目录 Typecho解决文章太短描述中暴露短代码的问题 问题背景 技术分析 Typecho摘要生成机制 短代码处理机制 解决方案 方案一:修改摘要生成逻辑(推荐) 方案二:自定义字段替代摘要 方案三:主题层过滤处理 完整插件实现 性能优化 部署与维护 扩展思考 更智能的摘要生成 S…

Chrome紧急更新,谷歌修复正遭活跃利用的关键零日漏洞

谷歌已针对桌面版Chrome发布重要稳定渠道更新&#xff08;版本138.0.7204.157/.158&#xff09;&#xff0c;修复了六个安全漏洞&#xff0c;其中包括一个已被实际利用的漏洞。该更新正在向Windows、Mac和Linux平台推送&#xff0c;预计未来数日或数周内将通过自动更新完成部署…

Python数据分析从小白到高手

在当今数字化时代&#xff0c;数据分析已成为各行业中不可或缺的技能。Python作为一门功能强大且易于学习的编程语言&#xff0c;凭借其丰富的库和工具&#xff0c;在数据分析领域中占据着重要地位。无论是大学生希望提升自己的竞争力&#xff0c;还是职场小白渴望掌握新技能&a…

实训十一——网络通信原理

补充如何解决IPv4地址不足的问题&#xff1f;使用专用的IPv4地址范围&#xff08;如 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16&#xff09;并通过NAT转换与外部网络通信&#xff0c;能有效节约公网IPv4地址。根据RFC 1918的定义&#xff0c;以下是保留的私有IPv4地址范围&am…

网络编程(套接字)

目录 一、套接字 1、套接字的作用 2、关于TCP和UDP协议 1. TCP协议 2. UDP协议 3. 两者的区别 2、套接字函数 1&#xff09;函数 socket&#xff08;创建套接字同文件描述符&#xff09; 2&#xff09;准备套接字用结构体 1. 套接字的结构体 2. 客户端的套接字&…

Java爬虫与正则表达式——用正则来爬取数据

APIJava帮我们写好的各种功能的Java类。这些Java类统称为API。正则表达式就是API帮我们写好的类。正则表达式例子&#xff1a; 字符类&#xff1a;[abc]&#xff1a;只能是a&#xff0c;b或c[^abc]&#xff1a;除了a&#xff0c;b&#xff0c;c之外的任何字符[a-zA-Z]&#xff…

vue-router 导航式编程 参数的设置

主要是想记录一下this.$router.push、replace、go等方法的参数如何设置。字符串路径router.push(/home)直接使用字符串&#xff08;或模板字符串&#xff09;路径&#xff0c;可跳转到相应的URL路径。对象式路径路径也可以是一个对象&#xff0c;对象里以key:value的形式表示UR…

力扣每日一题--2025.7.17

&#x1f4da; 力扣每日一题–2025.7.17 &#x1f4da; 3202. 找出有效子序列的最大长度 II&#xff08;中等&#xff09; 今天我们要解决的是力扣上的第 3202 题——找出有效子序列的最大长度 II。这道题是昨天 3201 题的扩展&#xff0c;需要我们处理更一般化的情况。 ⚠️…

多线程--单例模式and工厂模式

一.什么是设计模式设计模式好⽐象棋中的"棋谱".红⽅当头炮, ⿊⽅⻢来跳.针对红⽅的⼀些⾛法,⿊⽅应招的时候有⼀ 些固定的套路.按照套路来⾛局势就不会吃亏.软件开发中也有很多常⻅的"问题场景".针对这些问题场景,⼤佬们总结出了⼀些固定的套路.按照这 个套…

notepad++ 多行复制拼接

如何将中文一 一复制到英文后面按住 ALT ,鼠标左键拖动多行选中中文Ctrl C 复制 在英文的第一行结尾处 Ctrl v 粘贴

Redis主从复制数据同步实现原理详细介绍

文章目录一、主从复制的概念二、全量复制&#xff08;完整重同步&#xff09;三、增量复制&#xff08;部分重同步&#xff09;1. 增量复制的核心思想2. 增量复制的实现3. 复制偏移量&#xff08;replicationoffset&#xff09;4. 复制积压缓冲区&#xff08;replicationbacklo…

PHP 社区正在讨论变更许可证,预计 PHP 9.0 版本将完全生效

2025年7月15日&#xff0c;PHP社区正式提出将PHP语言和Zend Engine的许可证统一为BSD-3-Clause的提案&#xff0c;标志着这个拥有28年历史的编程语言正在经历根本性的法律框架重构。此次变更不仅涉及技术实现层面的调整&#xff0c;更折射出开源软件生态在法律合规性、商业兼容…

【React Native】Switch、Alert、Dimensions、StatusBar、Image组件

其他常用组件 swich https://reactnative.dev/docs/next/switch alert Alert React Native 如果想增加里面的按钮&#xff0c;就往这个数组里&#xff0c;按照这个格式不断的加东西就行了。但是&#xff1a; 在iOS上&#xff0c;里面多少个都有问题&#xff0c;3 个以上它…

我的开发日志:随机数小程序

文章目录前言UI设计代码前言 为什么我要设计这个程序呢&#xff1f;因为我要用&#xff0c;懒得在网上下载了&#xff0c;于是干脆写了一个。 UI设计 UI是我凹出来的&#xff0c;你们要使用&#xff0c;直接新建一个UI.ui文件&#xff0c;然后把下面的东西输进去就可以了。 …

Linux之Zabbix分布式监控篇(二)

一、前置回顾zabbix作为一个分布式监控工具&#xff0c;能帮助我们7*24*365监控硬件使用情况&#xff08;cpu,内存&#xff09;&#xff0c;以及网络流量波动&#xff0c;从而能让运维能及时排查错误zabbix由zabbix-server(10051)、zabbix-agent(10050)、zabbix-database、zabb…

远程团队任务管理模板:如何高效协作,破解远程工作痛点?

随着远程工作的兴起&#xff0c;越来越多的企业和团队开始依赖虚拟工作环境来实现日常工作任务。然而&#xff0c;远程工作虽然提供了灵活性&#xff0c;但也带来了任务管理上的挑战。如何确保团队成员在不同时间、地点之间高效协作&#xff1f;这正是远程团队任务管理模板能够…

大一暑假适合学51单片机吗?

大一暑假学 51 单片机&#xff0c;简直是老天爷赏饭吃的黄金窗口。我当时就是靠着这两个月&#xff0c;把从课本上看来的 C 语言指针、循环语句&#xff0c;变成了能让 LED 按节奏跳舞的真本事。学期里总被高数作业和英语背单词挤得没整块时间&#xff0c;焊个电路板还得算着实…

C++ 返回值优化(Return Value Optimization, RVO)

C 返回值优化&#xff08;Return Value Optimization, RVO&#xff09; 在 C 中&#xff0c;返回值优化&#xff08;RVO&#xff09; 是一种编译器优化技术&#xff0c;用于减少对象的拷贝或移动操作。当函数返回一个临时对象时&#xff0c;编译器可以将该对象直接构造在调用者…

自动化框架 Selenium 的使用

介绍 Selenium 是一个用于自动化 Web 浏览器的开源工具套件&#xff0c;主要用于 Web 应用程序测试&#xff0c;也可用于网页抓取和自动化 Web 任务。 早期的selenium RC已经被现在的webDriver所替代&#xff0c;可以简单的理解为selenium1.0webdriver构成现在的Selenium2.0。…

RAG深入了解P1:从RAG类型出发看优化点

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 有很多很多不足的地方&#xff0c;欢迎评论交流&#xff0c;感谢您的阅读和评论&#x1f604;。 目录引言1 RAG类型1.1 基础RAG (Naive/Standard RAG)1…