1. 程式人生 > 其它 >在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
}

如有錯誤請留言反饋