go微服务框架Kratos笔记(三)引入GORM框架
阅读原文时间:2022年04月04日阅读:1

介绍

GORM是一个使用Go语言编写的ORM框架。中文文档齐全,对开发者友好,支持主流数据库。

GORM官方文档

安装

go get -u github.com/jinzhu/gorm

在kratos中引入GORM框架

在kratos生成的目录internal/data中找到data.go文件,

修改NewData方法并封装数据库客户端

// Data .
type Data struct {
    db *gorm.DB
}

// NewData .
//集成gorm框架
func NewData(logger log.Logger) (*Data, func(), error) {
    // mysql数据库连接
    db, err := gorm.Open(mysql.Open(user:password@tcp(xxx.xxx.x.xxx:xxxx)/database_name?charset=utf8&parseTime=True&loc=Local), &gorm.Config{
        Logger: gormlog.Default.LogMode(gormlog.Info), //打印所有执行的sql语句
        NamingStrategy: schema.NamingStrategy{
            SingularTable: true, // 使用单数表名
        },
    })
    if err != nil {
        return nil, nil, err
    }
    d := &Data{
        db: db,
    }
    logHelp := log.NewHelper(logger)
    return d, func() {
        logHelp.Info("message", "closing the data resources")
    }, nil
}

使用方式

type greeterRepo struct {
    data *Data
    log  *log.Helper
}

// NewGreeterRepo .
func NewGreeterRepo(data *Data, logger log.Logger) biz.GreeterRepo {
    return &greeterRepo{
        data: data,
        log:  log.NewHelper(logger),
    }
}

func (r *greeterRepo) CreateGreeter(ctx context.Context, g *biz.Greeter) error {
    //调用gorm框架即可
    r.data.db.Raw("SELECT id, name, age FROM users WHERE name = ?", 3)
    return nil
}

如有错误请留言反馈