美文网首页
gorm的SingularTable作用

gorm的SingularTable作用

作者: 戈壁堂 | 来源:发表于2021-06-23 20:01 被阅读0次

Mapping between Gorm and database (singular and plural) table structures

数据库连接设置了以下属性的含义——对应变量在model_struct.go文件中的GetModelStruct()方法和TableName(db *DB) string中应用

db.SingularTable(true)

假设定义了——

type User struct {
   Id   int    `json:"id"`
   Name string `json:"name"`
   Age  int    `json:"age"`
}

type Users struct {
   Id   int    `json:"id"`
   Name string `json:"name"`
   Age  int    `json:"age"`
}
  1. 数据库中没有users表也没有user表,执行DB.AutoMigrate(&User{})DB.AutoMigrate(&Users{})——
    • 没有上述设置,则都自动创建users表(自动设置为复数形式);
    • 有上述设置时,则自动创建user表和users(遵守单数形式)
  1. 数据库中只有users表,没有db.SingularTable(true)设置

以下操作会将数据都添加到users表;设置之后,第一行将保存提示user表不存在

DB.Create(&User{Name: "Li", Age: 5})  // 
DB.Create(&Users{Name: "Li", Age: 5}) // 
  1. 数据库中只有user表,没有db.SingularTable(true)设置,相同的添加数据的操作都会失败,提示users表不存在
DB.Create(&User{Name: "Li", Age: 5}) // Table 'users' doesn't exist
DB.Create(&Users{Name: "Li", Age: 5}) // Table 'users' doesn't exist

总结:gorm默认使用复数映射,go代码的单数、复数struct形式都匹配到复数表中:创建表、添加数据时都是如此。指定了db.SingularTable(true)之后,进行严格匹配。

相关文章

网友评论

      本文标题:gorm的SingularTable作用

      本文链接:https://www.haomeiwen.com/subject/lzwbyltx.html