全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 6 分钟 ✍️ juanwangdev

命名约定与映射规则

GORM 默认使用蛇形命名(snake_case)规则将 Go 结构体映射到数据库表和列。

默认命名规则

表名映射

GORM 将结构体名转为蛇形命名并加复数后缀作为表名:

Go
type User struct{}      // -> users
type UserProfile struct{} // -> user_profiles
type Order struct{}     // -> orders

列名映射

GORM 将字段名转为蛇形命名作为列名:

Go
type User struct {
    ID        uint      // -> id
    UserName  string    // -> user_name
    CreatedAt time.Time // -> created_at
    IsVIP     bool      // -> is_vip
}

自定义表名

实现 TableName() 方法自定义表名:

Go
type User struct {
    ID   uint
    Name string
}

// 自定义表名
func (User) TableName() string {
    return "t_user"
}

自定义列名

使用 column 标签自定义列名:

Go
type User struct {
    ID        uint   `gorm:"column:uid"`
    UserName  string `gorm:"column:u_name"`
    CreatedAt time.Time `gorm:"column:create_time"`
}

关闭复数表名

Go
// 禁用表名复数化
db.NamingStrategy = schema.NamingStrategy{
    TablePrefix:   "",
    SingularTable: true, // 单数模式
}

type User struct{} // -> user(而非 users)

命名策略配置

Go
db.NamingStrategy = schema.NamingStrategy{
    TablePrefix:   "t_",     // 表前缀
    SingularTable: true,     // 单数表名
    NoLowerCase:   false,    // 是否关闭蛇形命名
}

映射规则速查

Go 结构体默认表名默认列名规则
Userusersid
UserProfileuser_profilesuser_id, user_name
Orderordersorder_no
Productproductsproduct_name

注意事项

  • GORM 默认使用蛇形命名 + 复数表名
  • 可通过 TableName() 方法完全覆盖表名
  • column 标签优先级高于默认规则
  • NamingStrategy 支持全局配置命名行为

要点总结

配置项默认行为自定义方式
表名蛇形 + 复数TableName() 方法
列名蛇形column 标签
全局规则NamingStrategydb.NamingStrategy 配置

存放路径:D:\git2\jwdev\articles\GORM\入门\模型标签与字段配置\命名约定与映射规则.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 gorm tag 使用
下一篇 → 字段忽略与只读配置
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库