美文网首页goSQLGolang语言知识库
知识分享之Golang——使用gorm时进行执行自定义SQL的几

知识分享之Golang——使用gorm时进行执行自定义SQL的几

作者: cn華少 | 来源:发表于2022-04-01 22:46 被阅读0次

    知识分享之Golang——使用gorm时进行执行自定义SQL的几种方式

    背景

    知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。

    知识分享系列目前包含Java、Golang、Linux、Docker等等。

    开发环境

    内容

    近期一直在使用gorm进行数据的增删改查操作,对于一些单表或关系表来讲使用起来比较方便,但是有时我们可能需要一些特定的长SQL,这时就需要使用到自定义SQL了,本节我对其进行整理出来一些常用的实现方式:

    1、当我们只需要执行某个SQL而不需要进行获取返回值时使用

        // 如果其中有变量,则使用?进行占位,
        sql := "要执行的SQL"
        // 在Exec方法中在sql 后面可以使用多个参数作为占位的补充
        // 例如需要name=?,则写法可以使用util.Db.Exec(sql,"张三").Error
        err := util.Db.Exec(sql).Error
        if err != nil {
            log.Println(err.Error())
        }
    

    2、当我们需要一个长组合SQL进行查询出来一个特定结果时,可以使用下面的方式实现自定义SQL使用

        sql := "要执行的SQL"
        // 接收返回结果的结构体
        type User struct {
            Id   int
            Name string
        }
        // 声明一个接收对象,这里接受多条时也可以使用数组进行
        var userInfo User
        err := util.Db.Raw(sql, "张三").Scan(&userInfo).Error
        if err != nil {
            log.Println(err.Error())
        }
    
    

    3、自定义处理返回值

        sql := "要执行的SQL"
        rows, err := util.Db.Raw(sql).Rows()
        if err != nil {
            log.Println(err.Error())
        }
        for rows.Next() {
            // 处理逻辑
        }
    
    本文声明:
    88x31.png
    知识共享许可协议
    本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

    相关文章

      网友评论

        本文标题:知识分享之Golang——使用gorm时进行执行自定义SQL的几

        本文链接:https://www.haomeiwen.com/subject/ewszjrtx.html