Mybatis-Plus更新字段值为NULL的方案对比
Mybatis-Plus简称为MP,关于MP的介绍及基本使用可以查看此前的一篇随笔。
在业务逻辑中,不可避免会有更新字段或重置字段的需求,使用过MP的小伙伴可能有发现,比如使用updateById(obj)更新字段,只会更新该对象已赋值的属性,因此MP的字段默认更新策略就推测出来了——null值不更新。
如果确实想重置字段有什么方法呢?
官方提供了三种方案,除此之外还可以在Mapper添加自定义sql,暂称为第四种方案。
针对前两种方法,如果不是团队约定的规范,则应该尽量避免使用,这种方式容易导致别人误操作你配置的字段。
如果觉得第三种方法写法不够直观或麻烦,可以使用自定义sql,如:
@Select("update user set name = #{user.name}, age = #{user.age}, email = null where id = #{user.id}")
void updateUserById(@Param("user") User user);