dbhelper.go 1019 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * @description:
  3. * @Author: CP
  4. * @Date: 2020-08-20 22:25:17
  5. * @FilePath: \construction_management\datasource\dbhelper.go
  6. */
  7. package datasource
  8. import (
  9. "fmt"
  10. "log"
  11. "sync"
  12. _ "github.com/go-sql-driver/mysql"
  13. "github.com/go-xorm/xorm"
  14. "go.mod/conf"
  15. )
  16. //互斥锁
  17. var dbLock sync.Mutex
  18. var masterInstance *xorm.Engine
  19. //单例模式
  20. func InstanceDbMaster() *xorm.Engine {
  21. if masterInstance != nil {
  22. return masterInstance
  23. }
  24. dbLock.Lock()
  25. defer dbLock.Unlock()
  26. if masterInstance != nil {
  27. return masterInstance
  28. }
  29. return NewDbMaster()
  30. }
  31. func NewDbMaster() *xorm.Engine {
  32. sourcename := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8",
  33. conf.DbMaster.User,
  34. conf.DbMaster.Pwd,
  35. conf.DbMaster.Host,
  36. conf.DbMaster.Port,
  37. conf.DbMaster.Datebase)
  38. instance, err := xorm.NewEngine(conf.DriverName, sourcename)
  39. if err != nil {
  40. log.Fatal("dbhelper.NewDbMaster NewEngine error ", err)
  41. return nil
  42. }
  43. //展示执行的sql语句
  44. instance.ShowSQL(true)
  45. masterInstance = instance
  46. return instance
  47. }