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 中如何构建灵活的复杂查询条件?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号