diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 47ce2020..74a05581 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -79,6 +79,7 @@ export default defineConfig({ {text: 'SQL 打印', link: '/zh/core/sql-print'}, {text: '多数据源', link: '/zh/core/multi-datasource'}, {text: '事务管理', link: '/zh/core/tx'}, + {text: '数据权限', link: '/zh/core/data-permission'}, {text: '字段权限', link: '/zh/core/columns-permission'}, {text: '字段加密', link: '/zh/core/columns-encrypt'}, {text: '字典回写', link: '/zh/core/columns-dict'}, diff --git a/docs/zh/core/data-permission.md b/docs/zh/core/data-permission.md new file mode 100644 index 00000000..2d8f6ee3 --- /dev/null +++ b/docs/zh/core/data-permission.md @@ -0,0 +1,34 @@ +# 数据权限 + +数据权限指的是不同的用户,通过某一个方法去查询的时候,得到的是不同的数据结果集。常见的数据权限有: + +- 获取全部数据 +- 仅获取本人创建的数据 +- 获取当前用户的部门数据 +- 获取部门级以下部门的数据 +- 获取某个地区的数据 +- 等等 + +这一些,都是通过当前的用户的信息(部门、角色、权限等),查询时,添加特定的条件。在 MyBatis-Flex 中,我们可以使用自定义数据方言 `IDialect` 的方式来实现这一种需求。 + +以下是示例代码: + +```java +public class MyPermissionDialect extends CommonsDialectImpl{ + + @Override + public String forSelectByQuery(QueryWrapper queryWrapper) { + + //获取当前用户信息,为 queryWrapper 添加额外的条件 + queryWrapper.and("..."); + + return supper.buildSelectSql(queryWrapper); + } +} +``` + +在项目启动时,通过 `DialectFactory` 注册 `MyPermissionDialect`: + +```java +DialectFactory.registerDialect(DbType.MYSQL, new MyPermissionDialect()); +``` \ No newline at end of file