在 MyBatis-Plus 中,使用updateById,null字段并不会更新,其实是和更新的策略有关,当然,也有插入策略。
1、调整全局策略(会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null)
mybatis-plus: global-config: db-config: insert-strategy: ignored # "忽略判断", 所有字段都插入 update-strategy: ignored # "忽略判断", 所有字段都更新
insertStrategy
、updateStrategy
属性的值有以下5种枚举类型:
ignored
“忽略判断”, 所有字段都更新或插入not_null
“非 NULL 判断”, 只更新或插入非NULL值not_empty
“非空判断”, 只更新或插入非NULL值且非空字符串default
如果字段的值不为null,则进行插入或者更新操作;如果字段的值为null,不执行操作,执行结果还是数据库原来的值或者默认值never
永远不进行插入或更新操作,即使字段的值不为null
2、调整字段验证注解
在属性上注解
根据具体情况,在需要更新或者插入的字段中调整验证注解,如忽略判断,任何情况都进行插入和更新操作:
@TableField(updateStrategy = FieldStrategy.IGNORED, insertStrategy = FieldStrategy.IGNORED)
3、使用 UpdateWrapper
UpdateWrapper<Entity> wrapper = new UpdateWrapper<>(); wrapper.eq("id", id) .set("field1", null) .set("field2", value2); myService.update(wrapper);
标签:判断,updateById,更新,忽略,插入,字段,Plus,Mybatis,null From: https://www.cnblogs.com/wongzzh/p/18023601