千家信息网

golang gorm更新日志执行SQL的方法

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了golang gorm更新日志执行SQL的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang gorm更新日志执行SQL的方法文章都会有所收
千家信息网最后更新 2026年11月03日golang gorm更新日志执行SQL的方法

这篇文章主要介绍了golang gorm更新日志执行SQL的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang gorm更新日志执行SQL的方法文章都会有所收获,下面我们一起来看看吧。

1. 更新日志

1.1. v1.0

1.1.1. 破坏性变更

  • gorm.Open返回类型为*gorm.DB而不是gorm.DB

  • 更新只会更新更改的字段

大多数应用程序不会受到影响,只有当您更改回调中的更新值(如BeforeSave,BeforeUpdate)时,应该使用scope.SetColumn,例如:

func (user *User) BeforeUpdate(scope *gorm.Scope) {  if pw, err := bcrypt.GenerateFromPassword(user.Password, 0); err == nil {    scope.SetColumn("EncryptedPassword", pw)    // user.EncryptedPassword = pw  // 不工作,更新时不会包括EncryptedPassword字段  }}
  • 软删除的默认查询作用域只会检查deleted_at IS NULL

之前它会检查deleted_at小于0001-01-02也排除空白时间,如:

SELECT * FROM users WHERE deleted_at IS NULL OR deleted_at <= '0001-01-02'

但是没有必要,如果你使用*time.Time作为模型的DeletedAt,它已经被gorm.Model使用了,所以SQL就足够了

SELECT * FROM users WHERE deleted_at IS NULL

所以如果你使用gorm.Model,那么你是好的,没有什么需要改变,只要确保所有记录的空白时间为deleted_at设置为NULL,示例迁移脚本:

import (    "github.com/jinzhu/now")func main() {  var models = []interface{}{&User{}, &Image{}}  for _, model := range models {    db.Unscoped().Model(model).Where("deleted_at < ?", now.MustParse("0001-01-02")).Update("deleted_at", gorm.Expr("NULL"))  }}
  • 新的ToDBName逻辑

在GORM将struct,Field的名称转换为db名称之前,只有那些来自golint的常见初始化(如HTTP,URI)是特殊处理的。

所以字段HTTP的数据库名称将是http而不是h_t_t_p,但是一些其他的初始化,如SKU不在golint,它的数据库名称将是s_k_u,这看起来很丑陋,这个版本固定这个,任何大写的初始化应该正确转换。

错误RecordNotFound已重命名为ErrRecordNotFound

mssql驱动程序已从默认驱动程序中删除,

导入它用import _ "github.com/jinzhu/gorm/dialects/mssql"

Hstore已移至github.com/jinzhu/gorm/dialects/postgres

gorm执行sql

type Object interface {  GroupOrderOpenlog() (uidList []int)}func (o *object) GroupOrderOpenlog() {        type res struct {                Uid int `json:"uid"`        }        var re []res        sql:= "SELECT uid FROM order_openlog  GROUP BY uid"        o.Db.Raw(sql).Scan(&re)        fmt.Println(re)        for _,k :=range re{                fmt.Println(k.Uid)        }}

关于"golang gorm更新日志执行SQL的方法"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"golang gorm更新日志执行SQL的方法"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

更新 日志 方法 名称 字段 知识 程序 内容 只有 数据 数据库 时间 空白 篇文章 驱动程序 检查 驱动 特殊 丑陋 必要 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 瑰夏咖啡 苏州找大状互联网科技有限公司 科技制造互联网公司 电子科技大学互联网 广西拼得多互联网科技有限公司 互联网实体化科技化 现代科技和互联网有关系吗 新华互联网科技2019 广州恒生互联网科技有限 贵州叶脉互联网科技有限公司所属行业 互联网还是高科技吗 南平创想时代互联网科技有限公司 昭通互联网科技选哪家 江阴互联网智能科技产品进口 广州千川互联网科技有限公司 互联网与数字科技关系 上海万顺科技互联网有限公司招聘 保山互联网科技靠谱吗 广州三三互联网科技有限公司 上海互联网科技园景观 哈尔滨新华互联网科技 洛阳昕诺飞互联网科技有限公司 互联网金融科技展 科技类公司包括互联网吗 朱啸虎曾投资哪些互联网科技企业 徐州市互联网科技有限公司 互联网金融科技公司的优势 互联网科技包装股 湖北辰鑫科技互联网 科技互联网专业工作会议发言稿
0