Document document = Document.parse(JSON.toJSONString(content));
document.remove("contentId");
document.remove("createTime");
Update update = new Update();
for (Map.Entry<String, Object> entry : document.entrySet()) {
update.set(entry.getKey(), entry.getValue());
}
不知道大家有沒有發現,這樣更新字段,其實你不需要知道需要修改哪幾個字段,就可以實現使用最少的代碼實現想要實現的效果。
但是大家需要注意的是,如果某個字段有默認值,但是實際業務並不會修改它,這時候就需要手動移除調該屬性,是不是覺得很麻煩。所以只能繼續優化這段代碼。
如果我不想在代碼里這樣寫,請問有辦法嗎?如果想要實現這個功能實際上也是可以的,我們需要在content實體類
的contentId和createTime兩個屬性上添加@JsonField(serialize = false)。下面給大家解釋下這個注解的作用。這個注解是fastjson提供的,主要是告訴實體對象生成json對象時,可以
忽視這兩個字段。所以代碼進一步優化后的效果如下
Document document = Document.parse(JSON.toJSONString(content));
Update update = new Update();
for (Map.Entry<String, Object> entry : document.entrySet()) {
update.set(entry.getKey(), entry.getValue());
}
如果大家在看到這個的時候,有更好的優化方案歡迎留言