0

背景

我有一个Person有很多属性的类。

我想要的是

允许用户编辑这些属性。

我试过的 1

create function 它的参数就是所有的属性,创建一个sql语句,然后调用存储过程。

问题

也许用户只想编辑他的一个参数(这是更常见的情况),所以以我的方式,即使他只想编辑其中一个,他也必须输入所有属性。

我试过的 2

为每个属性创建函数以对其进行编辑。

问题

我必须用太多的 sql 语句编写太多的函数。

我的问题

解决问题的最佳方法是什么?有什么设计模式吗?

提前致谢

4

1 回答 1

3

可能您可以将要更新的属性作为Map<String,Object> 其中key ==您的属性名称和value =属性的值。

这样

  • 您可以通过以下方式获取多个属性Map
  • 您甚至可以在不限制用户为其他属性赋予价值的情况下更新单个属性

一旦用户提供了相同的内容,您就可以遍历地图的条目并Person相应地更新对象。

编辑:说Personnameage属性,然后你提供方法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;
}
于 2013-04-28T10:54:16.930 回答