我正在使用 golang、go_reform、PostgreSQL。我想要做的是一个 REST 搜索实用程序,在我遇到条件搜索查询之前一切都很顺利。这里的“有条件”是指我在一个表中有 10 列要搜索,并且可能有很多组合,所以我无法单独处理它们。我需要的是一个查询生成器,但我不知道如何在 Go 中实现它。现在我有这样的想法,但似乎效率不高
type Query struct {
Id *int64
FirstName *string
MiddleName *string
LastName *string
AreaId *int64
Birthday *time.Time
}
func (table *Query) Find() (*User) {
if table.Id != nil {
idstr := fmt.Sprintf("WHERE Id = %d AND ", table.Id)
}
else idstr := "WHERE "
}
if table.FirstName != "" {
firststr := fmt.Sprintf("FirstName = %s AND", table.FirstName)
}
else firststr := ""
}//and so on
这感觉真的很尴尬,所以我想知道是否有更好的方法来确定进入的字段Find()
并基于此构建 SQL 查询。(实际上它来自 JSON 并绑定到Query
结构,所以也许有一种没有结构的方法)。也可能有 SQL 解决方法,但我认为在没有所有可能列的情况下构建查询会更有效。
编辑:顺便说一句,为了让我的谷歌搜索查询更准确,我发现了一堆与我的问题相关的东西,可能我现在会尝试使用它。对于那些也感兴趣的人: old go playground example
gorp 包(片段听起来很有前途)
吃鸡游戏
FFIVE
肥皂起泡泡
相关分类