news 2026/1/16 17:02:48

Gorm2.0有哪些变化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Gorm2.0有哪些变化

GORM 2.0 是一次彻底重写,带来了大量新特性、性能改进和破坏性变更,总结如下:

---

✅ 主要新特性与改进
特性类别 新增或改进内容
性能与模块化 性能显著提升,架构更模块化,支持插件化扩展 。
Context 支持 所有数据库操作支持 context.Context,日志也支持上下文追踪 。
批量操作 支持批量插入(CreateInBatches)和分批查询(FindInBatches) 。
预编译与 DryRun 支持预编译语句(PrepareStmt)和仅生成 SQL 不执行的 DryRun 模式 。
Joins 预加载 支持使用 INNER JOIN 的预加载方式,避免 N+1 问题 。
查询到 Map 支持将查询结果扫描到 map[string]interface{} 或 []map[string]interface{} 。
嵌套事务 支持 SavePoint、RollbackTo 等嵌套事务操作 。
SQL 构建增强 支持命名参数、分组条件、子查询、Upsert、锁、优化器提示等 。
关联模式增强 支持批量关联操作、关联删除、关联替换等 。
字段权限控制 支持字段级别的读写、创建、更新权限控制 。
自定义数据类型 更好支持 JSON 等自定义类型 。
插件系统 新的插件机制,支持读写分离、Prometheus 监控等官方插件 。

---

⚠️ 破坏性变更(Breaking Changes)
变更点 说明
导入路径变更 从 github.com/jinzhu/gorm 改为 gorm.io/gorm,驱动也独立为 gorm.io/driver/* 。
BlockGlobalUpdate 默认开启,禁止无条件的全局更新/删除,需手动开启 AllowGlobalUpdate 。
ErrRecordNotFound 只在 First, Last, Take 中返回,移除 RecordNotFound() 方法,需用 errors.Is 判断 。
Hooks 接口变更 所有钩子方法必须定义为 func(tx *gorm.DB) error,否则无效 。
软删除必须显式使用 gorm.DeletedAt 不再自动识别 DeletedAt 字段,需显式使用 gorm.DeletedAt 类型 。
事务链式调用线程安全 方法链共享 Statement,需使用 Session 或 WithContext 保证并发安全 。
更新结构体行为变化 使用 Select 才能更新零值字段,否则会被忽略 。
不再支持字段别名 不再支持 AS 关键字为字段起别名 。

---

✅ 升级建议
- 修改 import 路径为 gorm.io/gorm 和 gorm.io/driver/*。
- 检查所有钩子函数签名是否符合新规范。
- 替换 RecordNotFound() 为 errors.Is(err, gorm.ErrRecordNotFound)。
- 若使用软删除,确保字段类型为 gorm.DeletedAt。
- 更新事务和关联操作代码,避免并发问题。

---

如需进一步查看官方升级指南,可访问:[GORM 2.0 Release Note](https://gorm.io/docs/v2_release_note.html) 。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/22 0:30:19

Java过滤器-拦截器-AOP-Controller

1 对比组件核心用途主要应用场景‌过滤器 (Filter)‌在请求到达Servlet之前或响应返回客户端之前,对原始的ServletRequest和ServletResponse进行预处理或后处理。字符编码设置、敏感词过滤、URL级别的权限认证、请求日志记录。‌12‌拦截器 (Interceptor)‌在请求进…

作者头像 李华
网站建设 2025/12/22 4:41:12

jQuery圆形进度条插件:创建动态环形进度指示器的完整指南

jQuery圆形进度条插件:创建动态环形进度指示器的完整指南 【免费下载链接】jquery-circle-progress jQuery Plugin to draw animated circular progress bars 项目地址: https://gitcode.com/gh_mirrors/jq/jquery-circle-progress 在现代网页开发中&#xf…

作者头像 李华
网站建设 2025/12/22 17:18:17

Wan2.2-T2V-5B本地化部署方案:保护数据隐私的最佳实践

Wan2.2-T2V-5B本地化部署方案:保护数据隐私的最佳实践你有没有想过,一个能“看懂文字就生成视频”的AI模型,居然能在你的办公室服务器上安静运行,连一比特数据都不用上传到云端?🤯 这听起来像科幻片的桥段&…

作者头像 李华
网站建设 2025/12/22 22:50:35

Wan2.2-T2V-A14B助力地方文旅局打造城市IP形象视频

Wan2.2-T2V-A14B助力地方文旅局打造城市IP形象视频 你有没有刷到过那种让人眼前一亮的城市宣传片?夜幕下的西湖泛着微光,汉服少女提灯走过石桥,远处雷峰塔灯火通明,突然一条金龙从湖面腾起——画面电影感拉满,情绪瞬间…

作者头像 李华
网站建设 2025/12/23 4:00:00

Wan2.2-T2V-A14B模型轻量化改造方案探索

Wan2.2-T2V-A14B模型轻量化改造方案探索 在短视频井喷、内容创作门槛不断降低的今天,AI生成技术正从“炫技”走向“实干”。尤其是文本到视频(Text-to-Video, T2V)这类高复杂度多模态任务,已经不再是实验室里的玩具——它正在影视…

作者头像 李华
网站建设 2025/12/23 6:53:47

图书管理|基于springboot + vue图书管理系统(源码+数据库+文档)

图书管理 目录 基于springboot vue图书管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue图书管理系统 一、前言 博主介绍:✌️大…

作者头像 李华