go-zero 连接 gorm 并提供 api 接口

go-zero 操作 mysql

在 go-zero 中操作 mysql 数据库,先通过 goctl 生成 model 文件,然后通过 model 文件操作数据库

具体的操作方式如下:

  1. 通过 sql 文件生成 model 文件
  2. 数据库连接
  3. 操作 model,修改业务逻辑

通过 sql 文件生成 model 文件

先定义 user.sql 文件:

 

sql

复制代码

create table user ( id bigint AUTO_INCREMENT, username varchar(36) NOT NULL, password varchar(64) default "", UNIQUE name_index (username), PRIMARY KEY (id) ) ENGINE = InnoDB COLLATE utf8mb4_general_ci;

然后通过这个 user.sql 生成 model 文件

 

bash

复制代码

goctl model mysql ddl --src user.sql --dir .

数据库连接

在 etcd/user.yaml 中配置数据库连接信息

 

yaml

复制代码

Mysql: DataSource: root:123456@tcp(go-uccs:3306)/zero_study?charset=utf8mb4&parseTime=True&loc=Local

在 internal/config/config.go 中增加数据库的配置参数

 

go

复制代码

type Config struct { rest.RestConf Mysql struct { DataSource string } }

在 internal/srv/servicecontext.go 中增加数据库的连接方式,这里的 user 是 user.sql 文件生成的 model

 

go

复制代码

type ServiceContext struct { Config config.Config UsersModel user.UserModel } func NewServiceContext(c config.Config) *ServiceContext { mysqlConn := sqlx.NewMysql(c.Mysql.DataSource) return &ServiceContext{ Config: c, UsersModel: user.NewUserModel(mysqlConn), } }

修改业务逻辑

在 internal/handler/loginhandler.go 文件中就可以调用 model 中的相关方法完成业务逻辑了

调用 model 中的方法是通过 l.svcCtx.UsersModel 调用

 

go

复制代码

func (l *LoginLogic) Login(req *types.LoginRequest) (resp string, err error) { user, err := l.svcCtx.UsersModel.FindOneByUsernameAndPassword(l.ctx, req.UserName, req.Password) if err != nil { return "", errors.New("登录失败") } return user.Username, nil }

go-zero 接入 gorm

gorm 是目前最流行的 orm 框架,相比 go-zero 再带的 sqlxgorm 操作数据库更加方便

go-zero 支持接入 gorm,具体的操作方式如下:

  1. 准备 gorm 连接数据库的配置,在 etc/users.yaml 中增加 mysql 的配置
     

    yaml

    复制代码

    Mysql: DataSource: root:123456@tcp(go-uccs-1:3306)/zero_study?charset=utf8mb4&parseTime=True&loc=Local
  2. 准备 gorm 连接数据库的方法
     

    go

    复制代码

    func InitGorm(MysqlDataSource string) *gorm.DB { db, err := gorm.Open(mysql.Open(MysqlDataSource), &gorm.Config{}) if err != nil { panic("连接 mysql 数据库失败:" + err.Error()) } else { fmt.Println("连接数据库成功") } db.AutoMigrate(&user.UserModel{}) return db }
  3. 在配置文件中增加 mysql 的结构体
     

    go

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值