背景
我有一个Person有很多属性的类。
我想要的是
允许用户编辑这些属性。
我试过的 1
create function 它的参数就是所有的属性,创建一个sql语句,然后调用存储过程。
问题
也许用户只想编辑他的一个参数(这是更常见的情况),所以以我的方式,即使他只想编辑其中一个,他也必须输入所有属性。
我试过的 2
为每个属性创建函数以对其进行编辑。
问题
我必须用太多的 sql 语句编写太多的函数。
我的问题
解决问题的最佳方法是什么?有什么设计模式吗?
提前致谢
我有一个Person有很多属性的类。
允许用户编辑这些属性。
create function 它的参数就是所有的属性,创建一个sql语句,然后调用存储过程。
也许用户只想编辑他的一个参数(这是更常见的情况),所以以我的方式,即使他只想编辑其中一个,他也必须输入所有属性。
为每个属性创建函数以对其进行编辑。
我必须用太多的 sql 语句编写太多的函数。
解决问题的最佳方法是什么?有什么设计模式吗?
提前致谢
可能您可以将要更新的属性作为Map<String,Object> 其中key ==您的属性名称和value =属性的值。
这样
Map一旦用户提供了相同的内容,您就可以遍历地图的条目并Person相应地更新对象。
编辑:说Person有name和age属性,然后你提供方法updatePerson一个Map包含条目的地方[key is"name" and value as "Actual Name"], [key is"age" and value as "15"]等
然后在您的更新方法中,您可以遍历Map并获取要更新的属性,如下所示
public boolean updatePerson(Map<String,Object> valueMap) {
for(Entry<String, Object> enrty : valueMap.entrySet()) {
String key = enrty.getKey();
//Person p = ... logic to get person
if("name".equals(key)) {
//p.setName(enrty.getValue());
}
else
if("age".equals(key)) {
//...
}
//finally update Person into DB...
}
return true;
}