我有一个类Person
,它有很多属性。
允许用户编辑这些属性。
create function其参数是所有属性,创建一个sql语句,然后调用存储过程。
也许用户只想编辑他的一个参数(这是更常见的情况),所以按照我的方式,他必须输入所有属性,即使他只想编辑其中一个。
为每个属性创建功能以进行编辑。
我必须使用太多的sql语句来编写太多的函数。
解决问题的最佳方法是什么?是否有任何设计模式?
提前致谢
答案 0 :(得分:3)
您可以将属性更新为Map<String,Object
&gt;其中键 ==您的属性名称和值 =属性的值。
以这种方式
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;
}