Golang 全域性sql資料庫連線

arxxin發表於2020-12-23

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 協議》,轉載必須註明作者和本文連結

相關文章