package data_source
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
"jin_project/models/chapter01"
"sync"
)
type ConnPool struct {}
// 单利
var once sync.Once
var Db *gorm.DB
var pool *ConnPool
var err error
func (p *ConnPool) InitPool() (bool) {
mysql_conf := LoadMysqlConf()
data_source := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
mysql_conf.UserName, mysql_conf.Password, mysql_conf.Host, mysql_conf.Port, mysql_conf.Database,
)
//------------ 连接数据库
Db, err = gorm.Open("mysql", data_source)
if err != nil {
//panic可以终止程序
//panic(err)
return false
}
Db.LogMode(mysql_conf.LogMode)
//自动迁移
Db.AutoMigrate(
&chapter01.User{},
)
return true
}
func NewConn() (*ConnPool){
once.Do(func() {
pool = &ConnPool{}
})
return pool
}在其他地方使用:
data_source.NewConn().InitPool()
data_source.Db.Create(&user)
// 最后的Close()很重要,别忘了 ????
data_source.Db.Close()



