GORM主鍵、表名、列名的約定

字號+ 編輯: Snake 修訂: 科学鼠辈 來源: 原创 2023-09-12 我要說兩句(0)

GORM默認會使用名爲ID的字段作爲表的主鍵。表名默認就是結構體名稱的複數。列名由字段名稱進行下劃線分割來生成。

主鍵(Primary Key)

GORM默認會使用名爲ID的字段作爲表的主鍵。
type User struct {
ID     string // 名爲`ID`的字段會默認作爲表的主鍵
Name  string
}
 
// 使用`AnimalID`作爲主鍵
type Animal struct {
AnimalID  int64 `gorm:"primary_key"`
Name     string
Age       int64
}

表名(Table Name)

表名默認就是結構體名稱的複數,例如:

type User struct {} // 默認表名是`users`
 
// 將User的表名設置爲`profiles`
func (user) TableName() string {
return "profiles"
}
 
func (u User) TableName() string {
If u.Role == "admin" {
return "admin_users"
} else {
return "users"
}
}
 
// 禁用默認表名的複數形式,如果設置爲true,則`User`的默認表名是`user`
db.SingularTable(true)

也可以通過Table()指定表名:

// 使用User結構體創建名爲`deleted_users`的表
db.Table("deleted_users").CreateTable(&User{})
 
var deleted_users []user
db.Table("deleted_users").Find(&deleted_users)
// SELECT * FROM deleted_users;
 
db.Table("deleted_users").Where("name = ?","jinzhu").Delete()
// DELETE FROM deleted_users WHRER name = 'jinzhu';
 
GORM還支持更改默認表名稱槼則:
gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
return "prefix_" + defaultTableName;
}

列名(Column Name)

列名由字段名稱進行下劃線分割來生成。

type User struct {
ID         unit        // column name is `id`
Name       string      // column name is `name`
Birthday   string      // comumn name is `birthday`
CreateAt   time.Time  // column name is `created_at`
}

可以使用結構體tag指定列名:

type Animal struct {
AnimalID  int64     `gorm:"column:beast_id"` // set column name to `beast_id`
Birthday  time.Time `gorm:"column:day_of_the_beast"` // set column name to `day_of_the_beast`
Age       int64     `gorm:"column:age_of_the_beast"` // set column name to `age_of_the_beast`
}

 

閲完此文,您的感想如何?
  • 有用

    1

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • GO語言GORM如何更新字段

  • gorm如何創建記錄與模型定義需要注意什麽

  • gorm一般查詢與高級查詢

  • GORM時間戳跟蹤及CURD(增刪改查)

我要說說
網上賓友點評