1 Star 0 Fork 0

曾广宇/mxx-core-v2

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
mysql.go 2.28 KB
一键复制 编辑 原始数据 按行查看 历史
曾广宇 提交于 2024-06-25 13:47 . 修正xorm
package mdb
import (
"fmt"
"gitee.com/dennis-mxx/mxx-core-v2/menv"
"gitee.com/dennis-mxx/mxx-core-v2/mexception"
"gitee.com/dennis-mxx/mxx-core-v2/mlogger"
_ "github.com/go-sql-driver/mysql"
"strings"
"time"
"xorm.io/xorm"
"xorm.io/xorm/log"
)
func InitMysql() {
if menv.Environment.Mysql.Addr == "" {
panic(mexception.NewException(mexception.NilException, "mysql.addr is nil"))
}
if menv.Environment.Mysql.MaxIdleConn == 0 {
menv.Environment.Mysql.MaxIdleConn = 5
}
if menv.Environment.Mysql.MaxOpenConn == 0 {
menv.Environment.Mysql.MaxOpenConn = 600
}
if menv.Environment.Mysql.Timeout == 0 {
menv.Environment.Mysql.Timeout = 30
}
var addr string
if i := strings.Index(menv.Environment.Mysql.Addr, "@"); i >= 0 {
addr = "user:pass" + menv.Environment.Mysql.Addr[i:]
} else {
addr = menv.Environment.Mysql.Addr
}
if engine, err := ConnectionMysql(menv.Environment.Mysql); err == nil {
Engine = engine
mlogger.Out.Info(fmt.Sprintf("Initialize [Connection mysql database [%s/%s] successful] ", menv.Environment.Mysql.Addr, addr))
} else {
panic(fmt.Sprintf("connection mysql database [%s] failure ", addr))
}
}
func ConnectionMysql(dataSource *menv.Mysql) (*xorm.Engine, error) {
defer mlogger.FormatException()
engine, err := xorm.NewEngine("mysql", menv.Environment.Mysql.Addr)
if err == nil {
timeout := time.Duration(dataSource.Timeout)
engine.SetMaxOpenConns(dataSource.MaxOpenConn) // 用于设置最大打开的连接数,默认值为0表示不限制
engine.SetMaxIdleConns(dataSource.MaxIdleConn) // 用于设置闲置的连接数
engine.SetConnMaxLifetime(timeout * time.Millisecond) // 设置一个超时时间,时间小于数据库的超时时间即可
engine.SetLogger(&ZapXormLogger{})
engine.ShowSQL(dataSource.ShowSql)
engine.EnableSessionID(true)
if menv.Environment.Logger != nil && menv.Environment.Logger.Level != "" {
if strings.EqualFold(menv.Environment.Logger.Level, "warning") {
engine.SetLogLevel(log.LOG_WARNING)
} else if strings.EqualFold(menv.Environment.Logger.Level, "error") {
engine.SetLogLevel(log.LOG_ERR)
} else if strings.EqualFold(menv.Environment.Logger.Level, "debug") {
engine.SetLogLevel(log.LOG_DEBUG)
} else {
engine.SetLogLevel(log.LOG_INFO)
}
}
}
return engine, err
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/dennis-mxx/mxx-core-v2.git
git@gitee.com:dennis-mxx/mxx-core-v2.git
dennis-mxx
mxx-core-v2
mxx-core-v2
v0.4.67

搜索帮助