为了数据库表名能够在生成和使用时完全按照自定义,下面有两种解决方法,推荐方法2
方法1
使用TableName()
即可解决, 缺点是每一个结构都要单独设置一次
type UsUser struct {
gorm.Model
ID int64 `gorm:"column:id" db:"column:id" json:"id" form:"id"`
}
// 使用 TableName 解决gorm表明映射
func (UsUser) TableName() string {
return "us_user"
}
方法2(推荐)
在gorm配置中加入一个NamingStrategy
,全局修改,配置一次即可,注意需要额外导一个包叫做"gorm.io/gorm/schema"
import ("gorm.io/gorm/schema")
newLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
logger.Config{
SlowThreshold: time.Second, // Slow SQL threshold
LogLevel: logger.Info, // Log level(这里记得根据需求改一下)
IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
Colorful: false, // Disable color
},
)
db, err := gorm.Open(mysql.Open(connString), &gorm.Config{
Logger: newLogger,
NamingStrategy: schema.NamingStrategy{
SingularTable: true, // 使用单数表名
},
})