package mysql import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "time" ) type Config struct { Dsn string MaxConn int MaxIdleConn int MaxLifetime int Debug bool } func NewDB(conf *Config) (db *gorm.DB) { var err error db, err = gorm.Open(mysql.Open(conf.Dsn), &gorm.Config{ //Logger: NewDBLogger(logger2.GetStdLog()), }) if err != nil { panic(fmt.Sprintf("连接mysql失败(-1): %s", err)) } s, _ := db.DB() err = s.Ping() if err != nil { panic(fmt.Sprintf("连接mysql失败(-2): %s", err)) } s.SetMaxOpenConns(conf.MaxConn) s.SetMaxIdleConns(conf.MaxIdleConn) s.SetConnMaxLifetime(time.Duration(conf.MaxLifetime) * time.Second) if conf.Debug { db = db.Debug() } return } func NewDBLogger(writer logger.Writer) logger.Interface { return logger.New(writer, logger.Config{ SlowThreshold: time.Second * 5, Colorful: true, IgnoreRecordNotFoundError: true, LogLevel: logger.Warn, }) }