Fork me on GitHub

gorm之model定义

gorm的几个默认规则如下:

默认的表名是定义的结构体名称小写复数形式
1
2
3
4
type Usr struct {
UsrId int
Name string
}

该结构体对应的默认表名就是usrs

1
2
3
4
5
6
7
8
// 全局禁用表名复数,如果设置为true,则`Usr`的默认表名为`user`,
db.SingularTable(true)

//但是如果使用TableName()显示设置了表名,则最终的表名以设置的为准
//如下:设置User的表名为`profiles`
func (User) TableName() string {
return "profiles"
}
列名是字段名的蛇形小写

大小写字母之间用_间隔

1
2
3
4
5
6
7
8
9
10
11
12
13
type User struct {
ID uint // 列名为 `id`
Name string // 列名为 `name`
Birthday time.Time // 列名为 `birthday`
CreatedAt time.Time // 列名为 `created_at`
}

//通过tag重设列名
type Animal struct {
AnimalId int64 `gorm:"column:beast_id"` // 设置列名为`beast_id`
Birthday time.Time `gorm:"column:day_of_the_beast"` // 设置列名为`day_of_the_beast`
Age int64 `gorm:"column:age_of_the_beast"` // 设置列名为`age_of_the_beast`
}
字段ID为默认主键
1
2
3
4
5
6
7
8
9
10
11
type User struct {
ID uint // 字段`ID`为默认主键
Name string
}

// 使用tag`primary_key`用来设置主键
type Animal struct {
AnimalId int64 `gorm:"primary_key"` // 设置AnimalId为主键
Name string
Age int64
}
您的鼓励是我持之以恒的动力