gorm的问题,为了全局使用db,我定义了全局变量,如果分成多个文件,db对象如何获取?

发布于 2022-09-12 22:22:14 字数 775 浏览 28 评论 0

package main

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

var db *gorm.DB
var err error

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("数据库连接错误")
    }
    r.GET("/ping/:name", ping)
    r.Run("127.0.0.1:8081") // listen and serve on 0.0.0.0:8080
}

func ping(c *gin.Context) {
    //c.JSON(200, gin.H{
    //    "message": "pong",
    //})
    var user UserModel
    db.First(&user)
    fmt.Println(user.ID)
    fmt.Println(user.Mobile)
    c.String(200, "Hello World"+c.Param("name"))
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

表情可笑 2022-09-19 22:22:14

定义一个model 包,或者 const 的包

image.png

然后在 main 里面导入这个 model

初始化链接上数据库后,就可以
model.DB = db

然后其他包只需要引入 model , 再 model.DB 就可以愉快的使用了

image.png

image.png

小草泠泠 2022-09-19 22:22:14

如果是在main包中使用多个文件,编译时应该使用go build .编译当前目录而不是指定文件编译。

比如目录如下:

.
├── config.go
├── const.go
└── main.go

则应该使用 go build .编译当前目录。


如果是分多个包,比如楼上说的创建一个model包。则导出全局DB变量即可。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文