有此MongoBean:SuperBean偏字段更新REST API
class SuperBean extends MongoBaseBean{
private String id;
private String title;
private String parent;
//And getters, setters
}
需要的是写的更新的API,其能够执行局部属性的更新。在网络上看到的以及从同行听到的常见方法是检查请求中的字段是否为空,如果不为空则更新。但是如果更新请求是为了将值更新为Null?
一些讨论之后,我们提出了三种方法:
设置默认值在bean领域。因此,而不是非空的父字段,如果它没有在请求中$,这将被视为更新。
class SuperBean extends MongoBaseBean{ private String id; private String title; private String parent = "$"; //And getters, setters }
让更新API实现接受一个Map。实际的bean被提取并且所有出现在请求映射中的字段都将被更新。
@Post public SuperBean updatePartial(Map<String,Object> dataObject) {}
让更新API接受包含2个映射的DTO。一个包含旧值,另一个包含新值。这在情况下可能是有利的,只有当数据库包含oldDataObj中发送的值时才会发生更新。但是这会增加有效载荷的大小。
class SuperBeanUpdateDTO { private Map<String, Object> oldDataObj; private Map<String, Object> newDataObject; //getters, setters } @Post public SuperBean updatePartial(SuperBeanUpdateDTO updateDTO) {}
哪些因素应该考虑到这些选择的方法之一?有没有更好的方法来解决这个问题?