/** * 数据库连接工具 * @author * @since 2021/9/8 * @File : db */ package utils import ( "fmt" _ "github.com/go-sql-driver/mysql" "github.com/go-xorm/xorm" "gitlab.52pay.top/go/easygoadmin/library/cfg" "time" "xorm.io/core" ) var XormDb *xorm.Engine func init() { fmt.Println("初始化并连接数据库") // 获取配置实例 config := cfg.Instance() if config == nil { return } var err error XormDb, err = xorm.NewEngine("mysql", config.Database.Master) if err != nil { fmt.Printf("数据库连接错误:%v", err.Error()) return } // 通过engine.Ping()来进行数据库的连接测试是否可以连接到数据库。 err = XormDb.Ping() if err == nil { fmt.Println("数据库连接成功") //关闭连接 //defer XormDb.Close() } else { fmt.Printf("数据库连接错误:%v", err.Error()) return } XormDb.DatabaseTZ = time.Local // 必须 XormDb.TZLocation = time.Local // 必须 // 设置连接池的空闲数大小 XormDb.SetMaxIdleConns(10) // 设置最大打开连接数 XormDb.SetMaxOpenConns(30) // 结构体与数据表的映射 tbMapper := core.NewPrefixMapper(core.SnakeMapper{}, config.Database.Prev) XormDb.SetTableMapper(tbMapper) // 开启调试模式和打印日志,会在控制台打印执行的sql if cfg.Instance().Database.Debug { XormDb.ShowSQL(cfg.Instance().Database.Debug) XormDb.Logger().SetLevel(core.LOG_DEBUG) } }