db.go 752 B

1234567891011121314151617181920212223242526272829303132333435
  1. package common
  2. import (
  3. "fmt"
  4. "gorm.io/driver/mysql"
  5. "gorm.io/gorm"
  6. "sync"
  7. )
  8. var db *gorm.DB
  9. var once sync.Once
  10. func GetDb() *gorm.DB {
  11. once.Do(func() {
  12. db = conn()
  13. })
  14. if GetConfig().Service.IsDebug {
  15. db = db.Debug()
  16. }
  17. return db
  18. }
  19. func conn() *gorm.DB {
  20. config := GetConfig()
  21. dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", config.Mysql.User, config.Mysql.Password, config.Mysql.Host, config.Mysql.Database)
  22. mysqlConn, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  23. if err != nil {
  24. panic(fmt.Sprintf("数据库链接失败:%s", err.Error()))
  25. }
  26. sqlDb, _ := mysqlConn.DB()
  27. sqlDb.SetMaxIdleConns(config.Mysql.Maxidleconns)
  28. sqlDb.SetMaxOpenConns(config.Mysql.Maxopenconns)
  29. return mysqlConn
  30. }