gorm的问题,为了全局使用db,我定义了全局变量,如果分成多个文件,db对象如何获取?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
定义一个model 包,或者 const 的包
然后在 main 里面导入这个 model
初始化链接上数据库后,就可以
model.DB = db
然后其他包只需要引入 model , 再 model.DB 就可以愉快的使用了
如果是在
main
包中使用多个文件,编译时应该使用go build .
编译当前目录而不是指定文件编译。比如目录如下:
则应该使用
go build .
编译当前目录。如果是分多个包,比如楼上说的创建一个
model
包。则导出全局DB
变量即可。