mybatis plus字段脱敏
时间: 2023-11-13 11:56:18 浏览: 83
编写一个Mybatis插件 Mybatis脱敏插件.docx
可以通过 Mybatis Plus 提供的自定义 SQL 注入器来实现字段脱敏。具体步骤如下:
1. 创建自定义 SQL 注入器类,实现 `ISqlInjector` 接口,并重写 `inject` 方法。
2. 在 `inject` 方法中,使用 `MetaObject` 对象获取当前 SQL 语句中的所有参数,并遍历参数列表,对需要脱敏的字段进行处理。
3. 处理完毕后,将修改后的 SQL 语句重新设置到 `sqlSource` 中。
4. 在 Mybatis 的配置文件中配置自定义 SQL 注入器。
下面是一个示例代码:
```java
public class CustomSqlInjector extends AbstractSqlInjector {
@Override
public void inject(SqlRunner sqlRunner) {
// 获取当前 SQL 语句
String sql = sqlRunner.getSql();
// 获取当前 SQL 语句中的所有参数
MetaObject metaObject = sqlRunner.getMetaObject();
Object parameterObject = metaObject.getValue("param1");
if (parameterObject instanceof Map) {
Map<String, Object> paramMap = (Map<String, Object>) parameterObject;
// 对需要脱敏的字段进行处理
if (paramMap.containsKey("name")) {
String name = (String) paramMap.get("name");
paramMap.put("name", desensitize(name));
}
}
// 将修改后的 SQL 语句重新设置到 sqlSource 中
sqlRunner.setSqlSource(new StaticSqlSource(sqlRunner.getConfiguration(), sql, metaObject));
}
private String desensitize(String str) {
// 实现脱敏逻辑
return str.replaceAll("(?<=\\w{1})\\w(?=\\w{1})", "*");
}
}
```
在 Mybatis 的配置文件中配置自定义 SQL 注入器:
```xml
<configuration>
<plugins>
<plugin interceptor="com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor"/>
<plugin interceptor="com.example.CustomSqlInjector"/>
</plugins>
</configuration>
```
阅读全文