go语言使用单例模式封装数据库连接池

发布时间 2023-10-18 08:39:54作者: 青烟绕指柔
package singledb

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"sync"
)

// 数据库连接对象只有一个
var (
	db   *gorm.DB
	Once sync.Once //只执行一次某个操作的机制
)

func GetDbInstance() *gorm.DB {
	Once.Do(func() {
		var err error
		dsn := "root:root@tcp(127.0.0.1:8889)/shop"
		db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
		if err != nil {
			panic("数据库连接失败")
		}
	})
	return db
}