Gorm 指定表前缀或指定表名
. 指定表前缀
db, err = gorm.Open("mysql", dsn) if err != nil { log.Fatalf("Open mysql failed. %v\n", err) } db.DB().SetConnMaxLifetime(100 * time.Second) //最大连接周期,超过时间的连接就close db.DB().SetMaxOpenConns(100) //设置最大连接数 db.DB().SetMaxIdleConns(0) //设置闲置连接数 db.SingularTable(true) //设置全局表名禁用复数 //指定表前缀,修改默认表名 gorm.DefaultTableNameHandler = func (db *gorm.DB, defaultTableName string) string { return "prefix_" + defaultTableName }
统一的表前缀最简单的方法就是在数据库初始化的时候,修改默认表名,把前缀带上。比如“it_article”表,结构体则是 type Article struct {}。如果不修改默认表名的话,结构体名称要加上前缀,变成 type ItArticle struct {},要不然找不到表
.指定表名
type Article struct { Id uint32 `json:"id"` Title string `json:"title"` Content string `json:"content"` } func (Article) TableName() string { //实现TableName接口,以达到结构体和表对应,如果不实现该接口,gorm会自动扩展表名为articles(结构体+s) return "it_article" }
模型中指定表名可以随便映射结构体,通过TableName返回表全名即可