gorm_mysql.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package initialize
  2. import (
  3. "github.com/flipped-aurora/gin-vue-admin/server/config"
  4. "github.com/flipped-aurora/gin-vue-admin/server/global"
  5. "github.com/flipped-aurora/gin-vue-admin/server/initialize/internal"
  6. _ "github.com/go-sql-driver/mysql"
  7. "gorm.io/driver/mysql"
  8. "gorm.io/gorm"
  9. )
  10. // GormMysql 初始化Mysql数据库
  11. // Author [piexlmax](https://github.com/piexlmax)
  12. // Author [SliverHorn](https://github.com/SliverHorn)
  13. // Author [ByteZhou-2018](https://github.com/ByteZhou-2018)
  14. func GormMysql() *gorm.DB {
  15. m := global.GVA_CONFIG.Mysql
  16. return initMysqlDatabase(m)
  17. }
  18. // GormMysqlByConfig 通过传入配置初始化Mysql数据库
  19. func GormMysqlByConfig(m config.Mysql) *gorm.DB {
  20. return initMysqlDatabase(m)
  21. }
  22. // initMysqlDatabase 初始化Mysql数据库的辅助函数
  23. func initMysqlDatabase(m config.Mysql) *gorm.DB {
  24. if m.Dbname == "" {
  25. return nil
  26. }
  27. mysqlConfig := mysql.Config{
  28. DSN: m.Dsn(), // DSN data source name
  29. DefaultStringSize: 191, // string 类型字段的默认长度
  30. SkipInitializeWithVersion: false, // 根据版本自动配置
  31. }
  32. // 数据库配置
  33. general := m.GeneralDB
  34. if db, err := gorm.Open(mysql.New(mysqlConfig), internal.Gorm.Config(general)); err != nil {
  35. panic(err)
  36. } else {
  37. db.InstanceSet("gorm:table_options", "ENGINE="+m.Engine)
  38. sqlDB, _ := db.DB()
  39. sqlDB.SetMaxIdleConns(m.MaxIdleConns)
  40. sqlDB.SetMaxOpenConns(m.MaxOpenConns)
  41. return db
  42. }
  43. }