Golang 如何把sql資料庫連線寫成全域性的,不用每次頻繁建立銷燬,減少資料庫消耗與程式碼複雜度。
資料庫連線通常在model層下的db.go中定義(命名自定義,也可以是database或者sql,與資料庫相關)
因為我這裡是使用mongoDb所以為model/mgo.go
程式碼:
package model
import (
"context"
_ "fmt"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
"time"
)
type mgo struct {
uri string //資料庫網路地址
database string //要連線的資料庫
//collection string //要連線的集合
}
var (
DB *mongo.Database
)
func Connect() (*mongo.Database, error) {
var m = &mgo{
"mongodb://localhost:27017",
"資料庫名",
//"資料庫表名",
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI(m.uri))
if err != nil {
log.Print(err)
}
DB = client.Database(m.database)
return DB, err
}
然後在main.go中初始化
func main() {
//初始化mongodb
model.Connect()
}
需要進行資料庫操作時,直接呼叫model中的DB即可
collection := model.DB.Collection("表名")
//插入操作
insertResult, err := collection.InsertOne(context.TODO(), "內容")
本作品採用《CC 協議》,轉載必須註明作者和本文連結