mirror of
https://gitlab.52pay.top/go/easygoadmin.git
synced 2025-09-26 22:47:58 +08:00
63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
/**
|
|
* 数据库连接工具
|
|
* @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)
|
|
}
|
|
}
|