問題背景
使用mybatis-plus進行數據庫交互,默認開啟null不更新設置,在新增數據后,編輯頁面將字段值清除后(date類型,int類型,為避免默認值傳入,model全部使用包裝類型初始化為null)無法將null值更新至數據庫
單個解決方案
通過UpdateWrapper的set方法強制字段為null值
通用解決方法
定義基礎類BaseModel,增加屬性updateFieldList,model繼承此類
自定自定義注解UpdateRequestBody替代RequestBody
自定義HandlerMethodArgumentResolver對前台json至后台Model轉換的攔截,需要對List類型的Model集合進行支持,獲取前台提交json對應定義Model中有同名屬性的,進行加入打待更新字段列表updateFieldList
將自定義BaseModelMethodArgumentResolver 加入到配置中去
public class WebConfig implements WebMvcConfigurer { @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { resolvers.add(new BaseModelMethodArgumentResolver()); } }
進行自定義UpdateWrapper構造
注:對標記TableField忽略注解的字段可以優化,反射可以應用初始化時掃描加入緩存進行優化