golang 通用数据库操作gorm使用

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返回表全名即可

You May Also Like

About the Author: daidai5771

发表评论

电子邮件地址不会被公开。 必填项已用*标注