mybatis plus 字段置空
时间: 2023-11-17 19:03:39 浏览: 104
Mybatis-Plus中可以通过设置FieldStrategy来控制字段为空时的更新策略。具体来说,可以将FieldStrategy设置为IGNORED,这样所有的字段都会设置到insert语句中,如果没设置值会更新为null;或者将FieldStrategy设置为NOT_NULL,这样会忽略null的字段,但不会忽略""。另外,还可以将FieldStrategy设置为NOT_EMPTY,这样会忽略为null或为空串的字段,不会插入数据库。如果需要在更新时将字段置空,可以使用updateById方法,并将需要置空的字段设置为null即可。
```java
User user = new User();
user.setId(1L);
user.setName(null);
user.setAge(18);
userMapper.updateById(user);
```
相关问题
mybatis plus 字段脱敏
MyBatis Plus是一个基于MyBatis的增强工具,它提供了很多便捷的功能来简化开发过程。在MyBatis Plus中,字段脱敏是一种常见的需求,用于保护敏感数据的安全性。
字段脱敏是指将敏感数据进行处理,使其在存储和展示时不易被识别。MyBatis Plus提供了几种方式来实现字段脱敏:
1. 使用数据库函数:可以通过在SQL语句中使用数据库函数来对字段进行脱敏处理。例如,可以使用数据库的MD5函数对密码字段进行加密存储。
2. 使用自定义类型处理器:可以通过自定义类型处理器来对字段进行脱敏处理。类型处理器是MyBatis的一个特性,它可以将Java对象与数据库中的数据进行转换。通过自定义类型处理器,可以在数据存储和读取时对字段进行脱敏处理。
3. 使用自定义SQL解析器:可以通过自定义SQL解析器来对SQL语句进行解析和修改,从而实现字段脱敏。通过自定义SQL解析器,可以在执行SQL语句之前对其中的字段进行脱敏处理。
以上是几种常见的实现字段脱敏的方式,具体选择哪种方式取决于你的需求和项目的实际情况。
mybatis plus字段脱敏
可以通过 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>
```
阅读全文