登录
首页 >  Golang >  Go教程

GORM 中如何构建灵活的复杂查询条件?

时间:2024-11-16 12:58:06 435浏览 收藏

今天golang学习网给大家带来了《GORM 中如何构建灵活的复杂查询条件?》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

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 中如何构建灵活的复杂查询条件?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>