doc: 更新数据权限文档,添加注意事项。

This commit is contained in:
Suomm 2023-06-15 12:12:48 +08:00
parent dc6928b9ac
commit 016587d18f

View File

@ -16,7 +16,7 @@
在自定义方言中,重写 `forSelectByQuery` 方法,这个方法是用于构建返回根据 `QueryWrapper` 查询的方法, 以下是示例代码: 在自定义方言中,重写 `forSelectByQuery` 方法,这个方法是用于构建返回根据 `QueryWrapper` 查询的方法, 以下是示例代码:
```java ```java
public class MyPermissionDialect extends CommonsDialectImpl{ public class MyPermissionDialect extends CommonsDialectImpl {
@Override @Override
public String forSelectByQuery(QueryWrapper queryWrapper) { public String forSelectByQuery(QueryWrapper queryWrapper) {
@ -29,13 +29,25 @@ public class MyPermissionDialect extends CommonsDialectImpl{
} }
``` ```
特别的,如果您使用的是 `Oracle` 数据库,需要继承 `OracleDialect` 类,示例:
```java
public class MyOraclePermissionDialect extends OracleDialect {
// 这个构造器只有在 Oracle 12C 的版本下才需要添加。
// public MyOraclePermissionDialect() {
// super(LimitOffsetProcessor.DERBY);
// }
}
```
在项目启动时,通过 `DialectFactory` 注册 `MyPermissionDialect` 在项目启动时,通过 `DialectFactory` 注册 `MyPermissionDialect`
```java ```java
DialectFactory.registerDialect(DbType.MYSQL, new MyPermissionDialect()); DialectFactory.registerDialect(DbType.MYSQL,new MyPermissionDialect());
``` ```
**常见问题1通过重写 `IDialect` 后,所有的查询都添加了条件,但是有些表不需要条件如何做?** **常见问题1通过重写 `IDialect` 后,所有的查询都添加了条件,但是有些表不需要条件如何做?**
>答:可以通过 CPI 获取 QueryWrapper 查询了哪些表,然后进行动态处理。例如 `List<QueryTable> tables = CPI.getQueryTables(queryWrapper)`,然后进一步对 >答:可以通过 CPI 获取 QueryWrapper 查询了哪些表,然后进行动态处理。例如 `List<QueryTable> tables = CPI.getQueryTables(queryWrapper)`,然后进一步对