1. 程式人生 > 其它 >Mybatis-Plus更新欄位值為NULL的方案對比

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);