一个用于数据库结构迁移的 CLI 与 Go 库,支持 SQL 文件和 Go 函数两种迁移方式。
go-gorm/gorm
Go 语言的全功能 ORM 库,可将结构体映射到数据库表,支持关联、钩子、事务和自动迁移。
- Star
- 39,978
- Fork
- 4,220
- 未关闭 Issue
- 554
- 最近提交
- 上个月
这是什么?
GORM 是一个 Go 语言的对象关系映射(ORM)库。开发者可以用 Go 结构体定义数据模型,直接完成增删改查,不必为每条查询手写 SQL;需要时也可以使用 SQL 构造器或原生 SQL。
它支持常见的关联关系,包括一对一、一对多、多对一、多对多、多态关联和单表继承,并通过 Preload 和 Joins 实现预加载。此外还提供带保存点的事务、批量插入、Upsert、行锁、创建/更新/删除/查询前后的钩子,以及自动迁移表结构的功能。
项目通过插件 API 进行扩展,已有的插件包括支持多数据库和读写分离的 Database Resolver,以及 Prometheus 集成。官方文档位于 gorm.io。
核心功能
- 01支持一对一、一对多、多对一、多对多及多态关联。
- 02通过 Preload 和 Joins 进行预加载。
- 03支持嵌套事务和保存点。
- 04提供批量插入、Upsert、行锁和分批查询。
- 05支持创建、保存、更新、删除、查询等钩子。
- 06提供自动迁移和插件 API。
适用场景
- 为基于关系型数据库的 Go Web 服务快速实现数据访问层,减少手写 SQL。
- 通过 Database Resolver 插件实现多数据库或读写分离。
- 在开发阶段使用自动迁移管理表结构变更。
快速上手
- 1
访问 gorm.io 查看 GORM 指南以进行安装和使用
标签
常见问题
- gorm 是什么?
- Go 语言的全功能 ORM 库,可将结构体映射到数据库表,支持关联、钩子、事务和自动迁移。 GORM 是一个 Go 语言的对象关系映射(ORM)库。开发者可以用 Go 结构体定义数据模型,直接完成增删改查,不必为每条查询手写 SQL;需要时也可以使用 SQL 构造器或原生 SQL。
- gorm 可以免费使用吗?用的什么许可证?
- gorm 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- gorm 还在维护吗?
- 半年内有更新。gorm 最近一次提交是在 2026年9月14日。
- gorm 适合用来做什么?
- 为基于关系型数据库的 Go Web 服务快速实现数据访问层,减少手写 SQL。 通过 Database Resolver 插件实现多数据库或读写分离。 在开发阶段使用自动迁移管理表结构变更。
- gorm 怎么安装和运行?
- 访问 gorm.io 查看 GORM 指南以进行安装和使用
- 在哪里获取 gorm?
- 源代码和安装说明在 GitHub 上:https://github.com/go-gorm/gorm
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
1.2万719GoOther更新于 4天前
面向 Node.js 与 TypeScript 的 ORM,提供类型安全的数据库访问,支持 PostgreSQL、MySQL、SQLite、MongoDB 等。
4.8万2527TypeScriptApache-2.0更新于 11小时前
免费的跨平台桌面 SQL 客户端与数据库工具,支持 100 多种数据库。
5.2万4422JavaApache-2.0更新于 昨天
面向 Node.js 等 JS 平台的 TypeScript/JavaScript ORM,同时支持 Active Record 与 Data Mapper 模式。
3.7万6697TypeScriptMIT更新于 10小时前
面向 Node.js 与 TypeScript 的 ORM,支持 PostgreSQL、MySQL、SQLite 等多种数据库。
3万4372TypeScriptMIT更新于 4小时前
Go 编程语言,用于构建简单、可靠、高效软件的开源语言。
13.9万2.2万GoBSD-3-Clause更新于 8小时前