其他分享
首页 > 其他分享> > 在kratos微服务中引入GORM框架

在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
}

如有错误请留言反馈

标签:kratos,log,框架,Data,db,GORM,func,data,gorm
来源: https://www.cnblogs.com/zly-go/p/15502509.html