GORM 中如何构建灵活的复杂查询条件?
gorm 中灵活构建复杂查询条件
在 gin controller 中使用 gorm 时,需要动态构建灵活的查询条件,对于不同的查询参数组合,单纯使用字符串拼接方式不仅麻烦,也不优雅。
解决方案:构建条件查询 map
第一步,在 controller 中接收所有 query 参数并转换为 map:
query := c.request.url.query() var querymap = make(map[string]any, len(query)) for k := range query { if c.query(k) != "" { querymap[k] = c.query(k) } }
第二步,在 service 中根据 querymap 构建复杂的 where 条件:
func buildsql(fields any, where map[string]any) *gorm.db { var db = db if fields != nil { db = db.select(fields) } if where != nil { for k, v := range where { db = db.where(k+" = ?", v) } } return db }
这样,在 controller 中使用以下代码即可执行灵活的查询:
UserServie.Find(UserServie.BuildSql(nil, queryMap))
以上就是GORM 中如何构建灵活的复杂查询条件?的详细内容,更多请关注硕下网其它相关文章!