栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

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

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

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

开发环境
  • 系统:windows10
  • 语言:Golang
  • 组件库:Bleve
  • golang版本:1.18
  • 组件官网:https://gorm.io/
  • 组件仓库:gorm
  • 开源协议:MIT License
内容

近期一直在使用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 国际许可协议 进行许可。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/944013.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号