如何确定需要从修改后的结构更新哪些数据库表列?

时间:2019-04-06 17:10:35

标签: go

我面临的问题更多是代码设计,而不是具体相关。我正在构建一个简单的CRUD应用程序,除更新部分外,一切似乎都很轻松:我有一个简单的结构类型:

type User struct {
   ID string
   Name string
   Password string
}

和用于数据存储层的接口:

type Store interface {
    ...
    Update(user *User) error
    ...
}

问题在于,对于大多数数据库驱动程序,您不能仅传递整个struct实例,并希望其系统知道哪些字段被修改,整个文档/行将被替换。我应该如何跟踪修改了哪些字段(以便可以在存储层中进行相应的更新)?也许将我要修改的所有字段作为接口{}传递给Update函数?

1 个答案:

答案 0 :(得分:0)

有很多方法可以实现这一目标。例如,您可以使用设置器更改值,因此可以跟踪更新的字段。 像这样:

type User struct {
   ID string
   Name string
   Password string
   updateFields map[string]bool
}

func (u *User) SetName(name string) {
   u.Name = name
   updateFields["name"] = true
}

您可以通过反射使用更多自动化的方法。