MyBatis Flex
简介
continew-starter-data-mf 是 ContiNew Starter 数据访问模块针对 MyBatis Flex 框架的扩展实现(@since 2.1.0,v2.6.0 由 data-mybatis-flex 更名为 data-mf),提供通用业务体系、声明式查询构建、数据权限与分页插件等增强能力。
主要特性
- 通用业务体系: 提供扩展的 BaseMapper、IService、ServiceImpl 基础设施
- 声明式查询: QueryWrapperHelper 结合 @Query 注解按实体字段构建查询条件(与 MyBatis Plus 版共用 data-core 的 @Query 注解体系)
- 内置数据权限: 基于 MyBatis Flex 方言的 SQL 级数据权限过滤(MyBatis Plus 版需搭配 extension-datapermission 模块)
- 分页插件: 内置分页插件,支持溢出处理与单页条数限制
快速开始
引入依赖
<dependency>
<groupId>top.continew.starter</groupId>
<artifactId>continew-starter-data-mf</artifactId>
</dependency>添加配置
配置详情请查看:top.continew.starter.data.autoconfigure.MyBatisFlexExtensionProperties。
需显式开启扩展配置
自动装配条件为 mybatis-flex.extension.enabled=true(未设置缺省匹配,默认不装配)。未开启时 MyBatis Flex 本体仍由其官方 starter 装配,但本模块的扩展能力(事务管理、默认配置、数据权限、分页插件)不生效。
--- ### MyBatis Flex 扩展配置
mybatis-flex.extension:
# 是否启用(必须显式配置为 true)
enabled: true
## 数据权限插件配置
data-permission:
# 是否启用(默认 false)
enabled: false
## 分页插件配置
pagination:
# 是否启用(默认 true)
enabled: true
# 数据库类型
db-type: MYSQL
# 是否溢出处理(默认 false)
overflow: false
# 单页分页条数限制(默认 -1,表示无限制)
max-limit: -1模块内置默认配置(default-data-mybatis-flex.yml):开启下划线转驼峰映射(map-underscore-to-camel-case: true)、主键名默认 flexId 等。
数据权限
数据权限基于 MyBatis Flex 方言(DataPermissionDialect)在 SQL 层按数据权限范围拼接过滤条件,在 Mapper/Service 方法上标注 @DataPermission 注解(@since 2.0.2)即可生效。
支持的数据权限范围(DataScope 枚举):ALL(全部)、DEPT_AND_CHILD(本部门及以下)、DEPT(本部门)、SELF(仅本人)、CUSTOM(自定义)。
需自行提供 DataPermissionFilter
启用数据权限后,需实现 DataPermissionFilter 接口(提供当前用户 ID、角色及数据权限范围)并注册为 Bean,否则装配失败。当前方言仅注册了 MySQL。
通用业务体系
public interface DemoMapper extends BaseMapper<DemoDO> {
}
public interface DemoService extends IService<DemoDO> {
}
@Service
public class DemoServiceImpl extends ServiceImpl<DemoMapper, DemoDO> implements DemoService {
}BaseMapper 额外提供 updateBatchById(批量更新)、query(链式查询)等方法;QueryWrapperHelper.build 结合实体字段 @Query 注解构建查询条件,并做 SQL 注入与排序字段校验(@since 2.5.2)。
核心依赖
| 依赖 | 描述 |
|---|---|
| top.continew.starter:continew-starter-data-core | 数据访问模块 - 核心模块(@Query 查询注解体系) |
| com.mybatis-flex:mybatis-flex-spring-boot3-starter | MyBatis Flex(框架本体) |
| me.ahoo.cosid:cosid-spring-boot-starter | CosId 分布式 ID 生成器(optional,按需引入) |
参考资料
- MyBatis Flex 官方文档:https://mybatis-flex.com/
- ContiNew Starter MyBatis Plus 模块