mybatis plus 更新字段为null
时间: 2025-06-22 10:56:29 浏览: 11
### 解决方案概述
在 MyBatis-Plus 中,由于默认采用 `FieldStrategy.NOT_NULL` 策略,这使得更新操作不会处理值为 `null` 的字段。为了能够成功地将字段更新为 `null`,可以采取多种方法来实现这一目标。
#### 方法一:全局配置 FieldFill 属性
通过修改全局配置文件中的 `field-strategy` 参数,将其设置为 `IGNORED` 或其他适当选项,可以让框架忽略非空校验并允许 `null` 值被写入数据库表中[^4]。
```yaml
mybatis-plus:
global-config:
db-config:
field-strategy: IGNORED
```
这种方法适用于整个应用程序范围内的所有实体类及其映射关系。
#### 方法二:使用 UpdateWrapper 设置特定字段为空
对于单次更新需求而言,可以直接利用 `UpdateWrapper` 来构建条件表达式,并显式指明哪些字段应该被设为 `null`[^5]:
```java
UpdateWrapper<YourEntity> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", entityId)
.set("your_field_name", null);
yourMapper.update(null, updateWrapper);
```
这种方式灵活性较高,可以根据实际业务逻辑动态调整需要清空的数据项。
#### 方法三:自定义 SQL 片段或 Mapper 接口扩展
如果上述两种途径仍不能满足复杂的应用场景,则考虑编写专门针对该功能点的 XML 文件片段或是继承 BaseMapper 创建新的 DAO 层接口,在其中定义个性化的 CRUD 操作语句。
例如可以在 mapper xml 文件内加入如下 sql 节点:
```xml
<update id="updateSomeFieldsToNull">
UPDATE your_table SET some_column = NULL WHERE id = #{id}
</update>
```
再配合对应的 Java Interface 定义相应的方法签名即可调用此定制化查询。
---
阅读全文
相关推荐

















