![1e7d3747227d635732465b46b14ea542.jpeg](https://i-blog.csdnimg.cn/blog_migrate/69e43afb5acf157689872e1a2df8ac77.jpeg)
Mybatis-Flex: 更灵活、更轻量、更好用
特征
- 很轻量,整个框架只依赖 Mybatis 再无其他第三方依赖
- 只增强,支持 Entity 的增删改查、及分页查询,但不丢失 Mybatis 原有功能
- 内置 Db + Row 工具,可以无需实体类对数据库进行增删改查
- 支持多种数据库类型,还可以通过方言持续扩展
- 支持多(联合)主键,以及不同的主键内容生成策略
- 支持逻辑删除设置、更新或插入的默认值配置以及大字段等设置
- 支持乐观锁字段配置,在数据更新时自动进行乐观锁检测
- 极其友好的 SQL 联动查询,IDE 自动提示不再担心出错
快速开始
Maven 依赖
以下的 xml maven 依赖示例中,可能并非最新的 Mybatis-Flex 版本,请自行查看最新版本,并修改版本号。
1、只用到了 Mybatis,没用到 Spring 的场景:
2、用到了 Spring 的场景
3、用到了 Spring Boot 的场景
hello world(原生)
第一步:编写 Entity 实体类
第二步,编写 Mapper 类,并继承 BaseMapper
第三步:开始查询数据
示例 1:查询 1 条数据
示例2:查询列表
示例3:分页查询
QueryWrapper示例
select *
select columns
简单示例:
多表查询(同时展现了功能强大的 as 能力):
select functions
where
where select
and (...) or (...)
group by
having
orderBy
join
Mybatis-Flex 乐观锁
使用场景
用于当有多个用户(或者多场景)去同时修改同一条数据的时候,只允许有一个修改成功。
实现原理
使用一个字段,用于记录数据的版本,当修改数据的时候,会去检测当前版本是否是正在修改的版本,同时修改成功后会把 版本号 + 1。
更新数据时,执行的 SQL 如下:
在以上的 SQL 中,若两个场景同时读取的是同一个 version 的内容,那么必然只最优先执行的 SQL 执行成功。
以下是 示例代码:
需要注意的是:
- 1、在同一张表中,只能有一个被 @Column(version = true) 修饰的字段。
- 2、Account 在插入数据时,若 version 未设置值,那么会自动被 Mybatis-Flex 设置为 0。