我从客户端获得了成功提交用户详细信息的JSON。
JSON中的某些元素可以跳过,因为它们没有更新。
在Golang服务器端,我定义了一个等效的结构。
服务器成功地将JSON字节封送到结构中。
type user struct {
Id *int64 `json:",omitempty"`
Name *string `json:",omitempty"`
Age *int64 `json:",omitempty"`
}
如何根据可用的JSON元素创建动态更新语句?
例如,我可能会单独获得Id和年龄。
如何动态创建更新语句,如update user set age = $1 where id = $2
另一次可能是Id和Name。
感谢您的回复。
答案 0 :(得分:1)
如果您不想使用ORM,请尝试使用Squirrel之类的SQL生成器,并在修改sql语句之前检查每个参数:
import (
sq "github.com/lann/squirrel"
"fmt"
)
statement := sq.Update("user").Where(sq.Eq{"Id": &u.Id})
if &u.Name != nil {
statement = statement.Set("Name", "Jack")
}
sql, args, err := statement.ToSql()
fmt.Println(sql)
在某些情况下,您可能需要首先查询数据库,以确保输入数据不会尝试将列'Name'显式设置为null(如update user set Name = null
...)。