/* * @description: * @Author: CP * @Date: 2020-08-20 22:25:17 * @FilePath: \construction_management\datasource\dbhelper.go */ package datasource import ( "fmt" "log" "sync" _ "github.com/go-sql-driver/mysql" "github.com/go-xorm/xorm" "go.mod/conf" ) //互斥锁 var dbLock sync.Mutex var masterInstance *xorm.Engine //单例模式 func InstanceDbMaster() *xorm.Engine { if masterInstance != nil { return masterInstance } dbLock.Lock() defer dbLock.Unlock() if masterInstance != nil { return masterInstance } return NewDbMaster() } func NewDbMaster() *xorm.Engine { sourcename := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8", conf.DbMaster.User, conf.DbMaster.Pwd, conf.DbMaster.Host, conf.DbMaster.Port, conf.DbMaster.Datebase) instance, err := xorm.NewEngine(conf.DriverName, sourcename) if err != nil { log.Fatal("dbhelper.NewDbMaster NewEngine error ", err) return nil } //展示执行的sql语句 instance.ShowSQL(true) masterInstance = instance return instance }