在kratos微服務中引入GORM框架
阿新 • • 發佈:2021-11-03
介紹
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 }
如有錯誤請留言反饋