goal/database 支持在任意 go 项目中使用啦

前言

经过了去年的忙碌,现在终于有点时间填之前的坑了。
在去年(2022),goal/database 组件发布之后,有朋友试用后问到 “是否能在 goal 框架之外使用这个数据库组件?”
我当时给的答复是可以的,但因为时间精力等原因,并没有对此做更多的介绍和讲解。这次趁最近在更新 database 组件,顺手在这里介绍一下应该如何在 goal 之外的框架使用 github.com/goal-web/database 这个好用的数据库组件。

安装

像安装其他大部分 go 组件一样,我们可以通过 go get 很方便的安装它

go get github.com/goal-web/database

使用

package "example"

import (
    "github.com/goal-web/database"
    "github.com/goal-web/database/table"
    "github.com/gin-gonic/gin"
)

func init() {
// 实例化数据库工厂
    factory := database.NewFactory(
        database.Config{
            Default: "mysql",
            Connections: map[string]contracts.Fields{
                "mysql": {
                    "driver":    "mysql",
                    "host":      "localhost",
                    "port":      "3306",
                    "database":  "goal",
                    "username":  "root",
                    "password":  "123456",
                    "charset":   "utf8mb4",
                    "collation": "utf8mb4_unicode_ci",
                },
                "mysql2": {
                    "driver":    "mysql",
                    "host":      "localhost",
                    "port":      "3307",
                    "database":  "goal",
                    "username":  "root",
                    "password":  "123456",
                    "charset":   "utf8mb4",
                    "collation": "utf8mb4_unicode_ci",
                },
            },
        },
        nil, // 第二个参数是一个 goal 的事件实例,非 goal 环境的情况下,允许为 nil
    )

    // 为 table 包设置数据库工厂
    table.SetFactory(factory)
}

// GetUserInfo  gin 框架的 http 接口
func GetUserInfo(ctx *gin.Context) {
    ctx.JSON(200, gin.H{
        "user": table.Query("users").Find(ctx.Query("user_id")),
    })
}

// GetAnotherUserInfo  获取另一个数据库连接中的用户信息的接口
func GetAnotherUserInfo(ctx *gin.Context) {
    ctx.JSON(200, gin.H{
        "user": table.WithConnection("users", "mysql2").Find(ctx.Query("user_id")),
    })
}

更多用法

更多更复杂的用法,例如自定义模型等请移步 github.com/goal-web/database

qbhy
讨论数量: 3

大佬,有微信群吗,想学习交流下

1年前 评论
qbhy (楼主) 1年前
qbhy

顶一个

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!