Skip to content

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 模块)
  • 分页插件: 内置分页插件,支持溢出处理与单页条数限制

快速开始

引入依赖

pom.xml
xml
<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 装配,但本模块的扩展能力(事务管理、默认配置、数据权限、分页插件)不生效。

application.yml
yaml
--- ### 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。

通用业务体系

java
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-starterMyBatis Flex(框架本体)
me.ahoo.cosid:cosid-spring-boot-starterCosId 分布式 ID 生成器(optional,按需引入)

参考资料

  1. MyBatis Flex 官方文档:https://mybatis-flex.com/
  2. ContiNew Starter MyBatis Plus 模块