假设我有 Employee 域类,我想从来自 UI 端的参数映射创建域类的对象。
我可以通过以下两种方式创建对象
Employee employee = new Employee(name: params.name, rollNo: params.rollNo)
等等。如果域类有 20 个变量,那么我们需要在上面的构造函数中写入所有变量。
Employee employee = new Employee(params)
上面的构造函数将使用匹配的参数填充对象。对。
现在我的问题来了。
如果假设我有从 DB 获取的现有域类对象,现在我想从来自 UI 的 params 映射更新这个对象。
什么是最好的方法(就像我们在上面的第二个选项中所做的那样)。
最佳答案
我认为最好使用命令对象并将其绑定(bind)到 Employee。
这是示例伪代码:
class EmployeeMgmtController {
def editEmp(EmployeeCmd cmd){
Employee editEmp = Employee.get(1)
editEmp.properties = cmd
editEmp.save()
}
}
class EmployeeCmd{
String id
static constraints = {
id blank:false,nullable:false
}
}
或者,
如果您在 Controller 上,并且仍想使用参数(并排除您不想绑定(bind)的任何字段):
bindData(editEmp, params, [exclude:['firstName', 'lastName']])
关于grails - 用大量变量更新域类对象的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35218182/