首页 > 文章列表 > 如何在多文件 Go 项目中共享 Gorm 数据库连接?

如何在多文件 Go 项目中共享 Gorm 数据库连接?

214 2024-11-17

如何在多文件 Go 项目中共享 Gorm 数据库连接?

在多文件项目中共享 gorm 数据库连接

在 gorm 中,如果多个文件需要共享同一个数据库连接,可以采用以下解决方法:

  1. 定义一个 model 包:

在单独的文件中创建一个包含模型结构的包,例如:

// models.go

package models

import "gorm.io/gorm"

type user struct {
    id       uint `gorm:"primarykey"`
    mobile   string
}
  1. 定义一个全局变量包:

创建一个包含全局数据库连接变量的包,例如:

// globals.go

package globals

import "gorm.io/gorm"

var db *gorm.db
  1. 在 main 函数中初始化数据库连接:

在应用程序的主函数中,初始化数据库连接并将其存储在全局变量中。

// main.go

package main

import (
    "fmt"
    "github.com/gin-gonic/gin"
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
    "log"

    "github.com/example/myapp/globals"
    "github.com/example/myapp/models"
)

func main() {
    r := gin.default()
    dsn := "root:nexon8888@tcp(127.0.0.1:3306)/iapplus?charset=utf8mb4&parsetime=true&loc=local"
    db, err := gorm.open(mysql.open(dsn), &gorm.config{})
    if err != nil {
        log.fatal("数据库连接错误")
    }
    globals.db = db

    r.get("/ping/:name", ping)
    r.run("127.0.0.1:8081")
}
  1. 在其他文件中导入 model 和全局变量包:

在需要访问数据库连接的其他文件中,导入 model 和全局变量包:

// user_controller.go

package controllers

import (
    "fmt"
    "github.com/gin-gonic/gin"

    "github.com/example/myapp/globals"
    "github.com/example/myapp/models"
)

func ping(c *gin.Context) {
    var user models.User
    globals.DB.First(&user)
    fmt.Println(user.ID)
    fmt.Println(user.Mobile)
    c.String(200, "Hello World"+c.Param("name"))
}

通过遵循此方法,可以在多文件项目中方便地共享 gorm 数据库连接。

来源:1730209269