GORM: 解决结构命名(大驼峰)需要在所对应的数据库表名(蛇形)后缀加s的问题

为了数据库表名能够在生成和使用时完全按照自定义,下面有两种解决方法,推荐方法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, // 使用单数表名
	},
})
暂无评论

发送评论 编辑评论


				
上一篇
下一篇