go微服务框架Kratos笔记(三)引入GORM框架
介绍
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
}
如有错误请留言反馈