当前位置: 首页 > news >正文

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) 。

http://www.cnnetsun.cn/news/5718.html

相关文章:

  • M.I.B.汽车系统定制指南:新手也能轻松解锁隐藏功能
  • React 360终极指南:从零构建企业级VR应用的完整方案
  • (7-2)MCP与AI Agent:MCP赋能AI Agent的方式
  • (7-3-01)综合实战:基于MCP实现的金融投资Agent(1)项目介绍+获取恐惧与贪婪指数数据+金融数据分析
  • MPLS LDP基础实验
  • need 1 软件工程师
  • SI2301-ASEMI小型电源适配器核芯组件SI2301
  • 《道德经》九
  • 顾问(应届生/新毕业)
  • MyBatis-Plus 不只是简化CRUD 15个高阶用法
  • 21、无线局域网安全攻防全解析
  • Kwaipilot AutoThink终极指南:40B参数模型实现智能推理革命
  • 如何快速找回消失的网页:网页时光机浏览器插件完整使用指南
  • OpenCore Legacy Patcher完整指南:让老旧Mac免费升级最新macOS系统
  • 7个OptiSystem高效仿真技巧:从基础操作到实战应用
  • 计算机视觉:从入门到熟悉(五)
  • 计算机毕设java彝族民族文化宣传网站 基于Java的彝族文化宣传平台设计与实现 Java技术驱动的彝族民族文化推广网站开发
  • 如何用一张图片+语音打造专属数字人?腾讯混元语音数字人技术深度解析
  • Agent服务Docker化迁移实战(多环境适配全攻略)
  • Python架构模式终极指南:从混乱到有序的软件工程实践
  • 高质量wordpress模板免费下载
  • GuardDog:你的开源软件供应链安全卫士
  • 超详细教程:CoffeeTime BIOS魔改工具让老主板兼容新CPU [特殊字符]
  • 群晖NAS百度网盘套件终极部署指南:告别云端传输烦恼
  • Windows Cleaner终极清理工具:让C盘爆红成为历史
  • OpenVoice语音克隆终极指南:从零掌握跨语言语音转换技术
  • 最近在重构3D数学库的时候踩了不少坑,尤其矩阵求逆和欧拉角转换这两个部分。直接上干货——先说矩阵求逆怎么在C#里实现得既快又准
  • BIM+GIS深度融合:高速公路数字化底座建设方案
  • 低代码如何赋能文具行业F2B2b?F2B2b全链路渠道协同与价值重构方法论
  • 「客户案例」“银发经济”的私域解法:处在流量高峰的他们不再烦恼