Mybatis-Plus更新欄位值為NULL的方案對比
阿新 • • 發佈:2021-08-11
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);