新建一个dbtool,这个可以支持链接池
首先在/Users/code/gopath/src/study/gorm/db.go添加如下代码

  1. package mysqltools
  2. import (
  3. "fmt"
  4. "github.com/jinzhu/gorm"
  5. _ "github.com/jinzhu/gorm/dialects/mysql"
  6. "log"
  7. "sync"
  8. )
  9. /*
  10. * MysqlConnectionPool
  11. * 数据库连接操作库
  12. * 基于gorm封装开发
  13. */
  14. type MysqlConnectionPool struct {
  15. }
  16. var instance *MysqlConnectionPool
  17. var once sync.Once
  18. var db *gorm.DB
  19. var errDB error
  20. func GetInstance() *MysqlConnectionPool {
  21. once.Do(func() {
  22. instance = &MysqlConnectionPool{}
  23. })
  24. return instance
  25. }
  26. /*
  27. * @fuc 初始化数据库连接(可在mail()适当位置调用)
  28. */
  29. func (m *MysqlConnectionPool) InitDataPool() (isSuccess bool) {
  30. db, errDB = gorm.Open(
  31. "mysql",
  32. "root:root@tcp(localhost:3306)/default?charset=utf8&parseTime=True&loc=Local")
  33. fmt.Println(errDB)
  34. if errDB != nil {
  35. log.Fatal(errDB)
  36. return false
  37. }
  38. //关闭数据库,db会被多个goroutine共享,可以不调用
  39. // defer db.Close()
  40. return true
  41. }
  42. /*
  43. * @fuc 对外获取数据库连接对象db
  44. */
  45. func (m *MysqlConnectionPool) GetMysqlDB() (dbCon *gorm.DB) {
  46. return db
  47. }

/Users/code/gopath/src/study/test/abc.go 添加如下代码:

  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. "study/gorm"
  7. )
  8. //这个就是对应的mysql表
  9. type Student struct {
  10. //gorm.Model
  11. Id int `gorm:"primary_key;auto_increment"`
  12. Telephone string
  13. FirstName string
  14. LastName string
  15. }
  16. func main() {
  17. // init database pool
  18. isSuccess := mysqltools.GetInstance().InitDataPool()
  19. if !isSuccess {
  20. log.Println("init database pool failure...")
  21. os.Exit(1)
  22. }
  23. // do something...
  24. var users []Student
  25. db := mysqltools.GetInstance().GetMysqlDB()
  26. db.Find(&users)
  27. for k, u := range users {
  28. fmt.Println(k, u.FirstName)
  29. }
  30. }

然后在/Users/easub/code/gopath/src/study/test运行go run abc.go:

  1. <nil>
  2. 0 LejuRobot
  3. 1 LejuRobot
  4. 2 LejuRobot

分类: web

标签:   golang   gorm