先附上网址
sql 转 gorm
https://www.printlove.cn/tools/sql2gorm
go-zero 官网
https://go-zero.dev/cn/docs/introduction/
gorm 官网
https://gorm.io/zh_CN/docs/index.html
新建个common,用来存放 gorm初始化代码
// 目录格式
common
├── xgorm
│ └── gorm.go
└── xxx...
// common/xgorm/gorm.go
func NewGorm(dsn string) *gorm.DB {
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
return db
}
srv 里初始化
// svc/servicecontext.go
type ServiceContext struct {
Config config.Config
Gorm *gorm.DB
}
func NewServiceContext(c config.Config) *ServiceContext {
dsn := "root:123456@tcp(0.0.0.0:3306)/dbName?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai"
return &ServiceContext{
Config: c,
Gorm: xgorm.NewGorm(dsn),
}
}
使用方法
// 例如:在 logic 文件里使用
l.svcCtx.Gorm.First(&userModel)
package logic
import (
"context"
"github.com/gogf/gf/v2/encoding/gbase64"
"index-srv/service/user/model"
"index-srv/service/user/cmd/rpc/internal/svc"
"index-srv/service/user/cmd/rpc/types"
"github.com/zeromicro/go-zero/core/logx"
)
type GetUserInfoLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetUserInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserInfoLogic {
return &GetUserInfoLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *GetUserInfoLogic) GetUserInfo(in *__.GetUserInfoReq) (*__.GetUserInfoRes, error) {
// todo: add your logic here and delete this line
// todo 用uid查询用户数据
var userModel model.User
first := l.svcCtx.Gorm.Where(&model.User{UId: in.UId}).First(&userModel)
if first.Error != nil {
return nil, first.Error
}
return &__.GetUserInfoRes{}, nil
}