news 2026/7/8 4:01:52

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 8:32:23

M.I.B.汽车系统定制指南:新手也能轻松解锁隐藏功能

你是否曾经对汽车原厂系统的功能限制感到困扰?为什么高端汽车的信息娱乐系统不能像智能手机一样自由定制和扩展?如果你的车载系统是Harman MHIG或MHI2/MHI2Q系列,那么M.I.B.正是你一直在寻找的解决方案。 【免费下载链接】M.I.B._More-Incred…

作者头像 李华
网站建设 2026/7/3 8:22:30

React 360终极指南:从零构建企业级VR应用的完整方案

React 360终极指南:从零构建企业级VR应用的完整方案 【免费下载链接】react-360 项目地址: https://gitcode.com/gh_mirrors/reac/react-360 传统网页体验正在面临前所未有的挑战:用户渴望沉浸式互动,企业需要创新营销手段&#xff0…

作者头像 李华
网站建设 2026/7/8 0:58:46

(7-2)MCP与AI Agent:MCP赋能AI Agent的方式

7.2 MCP赋能AI Agent的方式MCP作为一种开放协议,主要通过标准化接口、提供上下文管理以及安全可控的运行机制来赋能AI Agent。它定义统一规范,让各类外部工具、数据源能以插件形式便捷接入AI Agent工作流,AI Agent借此可动态发现并调用多样化…

作者头像 李华
网站建设 2026/7/5 11:42:34

MPLS LDP基础实验

MPLS实验建议使用Router路由器,可以进入diagnose模式,支持更多mpls命令。AR不支持 默认只为32位主机路由分配标签,使用lsp-trigger all为所有路由分配标签 R1R2R3# mpls lsr-id 1.1.1.1 mpls lsp-trigger all # mpls ldp # interface Gigab…

作者头像 李华
网站建设 2026/7/4 4:16:35

need 1 软件工程师

您将负责:全流程系统实现:深入理解客户需求,主导从设计、开发、测试到发布的完整过程。数据处理与整合:运用Bash脚本及SQL(基于主流RDBMS如MySQL、PostgreSQL、Oracle等),进行数据加工、抽取与整…

作者头像 李华