记录使用GORM配置去除复数数据表

56 阅读1分钟
func NewMySQL(conf *conf.DB) {
    var dsn = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", conf.User, conf.Password, conf.Host, conf.Port, conf.Database)
    mysqlDb, err := gorm.Open(mysql.New(mysql.Config{
       DSN:                       dsn,   // DSN data source name
       DefaultStringSize:         256,   // string 类型字段的默认长度
       SkipInitializeWithVersion: false, // 根据当前 MySQL 版本自动配置
    }), &gorm.Config{
       NamingStrategy: schema.NamingStrategy{
          TablePrefix:   conf.Prefix, // 设置表前缀
          SingularTable: true, // 禁用表名复数
       },
    })

    if err != nil {
       panic(err)
    }

    // 维护连接池
    sqlDB, err := mysqlDb.DB()
    if err != nil {
       panic(err)
    }
    // 设置空闲连接池中连接的最大数量
    sqlDB.SetMaxIdleConns(conf.MaxIdleConns)
    // 设置打开数据库连接数的最大数据量
    sqlDB.SetMaxOpenConns(conf.MaxOpenConns)
    // 设置连接可复用的最大时间
    sqlDB.SetConnMaxLifetime(time.Hour)

    DB = mysqlDb
}