在使用 Go 语言开发 Web 应用或后端服务时,我们经常需要与数据库打交道。为了简化数据库操作,开发者通常会使用 ORM(对象关系映射)框架。在 Go 生态中,GORM 是最受欢迎、功能最强大的 ORM 框架之一。
本文将围绕 GORM模型定义 与 GORM标签使用 这两个核心主题,详细讲解如何通过结构体和标签来映射数据库表,帮助初学者快速上手 GORM 的基本用法。

GORM 是一个功能齐全的 Go 语言 ORM 库,支持 MySQL、PostgreSQL、SQLite、SQL Server 等多种数据库。它允许你通过定义 Go 结构体(struct)来表示数据库表,并通过结构体字段上的标签(tag)控制字段如何映射到数据库列。
在 GORM 中,模型就是普通的 Go 结构体。为了让 GORM 能识别这个结构体并自动处理数据库交互,你需要嵌入 gorm.Model 或手动定义主键等字段。
gorm.Model 是一个内置的结构体,包含以下字段:
// gorm.Model 的定义ID uint `gorm:"primaryKey"`CreatedAt time.TimeUpdatedAt time.TimeDeletedAt gorm.DeletedAt `gorm:"index"` // 软删除因此,你可以这样定义用户模型:
package modelimport "gorm.io/gorm"type User struct { gorm.Model Name string `gorm:"size:100;not null"` Email string `gorm:"uniqueIndex;not null"` Age int `gorm:"check:age > 0"` IsActive bool `gorm:"default:true"`}如果你不想使用 gorm.Model,也可以自己定义主键和其他字段:
type Product struct { ID uint `gorm:"primaryKey;autoIncrement"` Code string `gorm:"size:50;uniqueIndex"` Name string `gorm:"not null"` Price float64 CreatedAt time.Time UpdatedAt time.Time}GORM 使用结构体字段的 gorm 标签来控制数据库映射行为。以下是几个常用的标签选项:
`gorm:"column:user_name"`size:255例如,下面的模型展示了多种标签的组合使用:
type Article struct { ID uint `gorm:"primaryKey"` Title string `gorm:"size:200;not null"` Content string `gorm:"type:text"` Views int `gorm:"default:0"` AuthorID uint `gorm:"index"` Status string `gorm:"default:'draft';check:status IN ('draft', 'published')"` CreatedAt time.Time UpdatedAt time.Time DeletedAt gorm.DeletedAt `gorm:"index"`}默认情况下,GORM 会将结构体名转换为复数小写作为表名(如 User → users)。你可以通过实现 TableName() 方法来自定义表名:
func (User) TableName() string { return "my_users"}Q:为什么我的字段没有同步到数据库?
A:请确保字段首字母大写(Go 的导出规则),并且没有使用 gorm:"-" 忽略标签。
Q:如何关闭软删除?
A:不要嵌入 gorm.Model,或手动定义字段时不包含 DeletedAt。
通过本文,你应该已经掌握了 Go语言ORM框架 GORM 的基本模型定义方法,以及如何使用 GORM结构体映射 标签来精确控制数据库表结构。合理使用这些标签,可以让你的代码更清晰、数据库设计更规范。
记住,GORM 的强大不仅在于模型定义,还在于其丰富的查询、关联、事务等功能。建议在掌握基础后,继续深入学习官方文档。
SEO关键词回顾:GORM模型定义、GORM标签使用、Go语言ORM框架、GORM结构体映射
本文由主机测评网于2025-12-11发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126241.html