Mybatis-Plus使用updateById,update进行更新的注意事项

时间:2025-04-27 15:08:04

-Plus FieldStrategy有三种策略:

  • IGNORED:忽略。当FieldStrategy策略为IGNORED时,表示忽略该字段的空值判断,即无论实体对象的值为空还是非空,都会进行新增、更新操作
  • NOT_NULL:非NULL。当FieldStrategy策略为NOT_NULL时,表示字段不能为空,如果实体对象的值为空,则不会进行新增、更新操作。
  • NOT_EMPTY:非空。当FieldStrategy策略为NOT_EMPTY时,表示字段不能为空字符串或null值,如果实体对象的值为空字符串或null,则不会进行新增、更新操作。

注意:updateById()方法的默认策略为NOT_NULL

2.配置

(1)全局配置field-strategy

在文件中添加:

mybatis-plus:
  global-config:
  	#字段策略 0:"忽略判断",1:"非 NULL 判断",2:"非空判断"
    field-strategy: 0

这样做是全局性配置,会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null,可能会影响其他业务数据的正确性。

(2)对某个字段设置单独的field-strategy

根据具体情况,在需要更新的字段中调整验证注解,如验证非空:

@TableField(strategy=FieldStrategy.NOT_EMPTY)

 我们只需要在需要更新为null的字段上设置忽略策略:

@TableField(strategy = )
private LocalDateTime time;

 此时,使用mybatis-plus中的updateById方法便可以更新成功,当参数实体类中的time字段为null时,数据库中的数据也为null