赞
踩
最近发现go比较火,就花时间看了下,基本语法和协程都比较好理解,新手建议使用go-zero,简单容易上手,只是ide我选择继续沿用idea,那我把自己从工具到框架的使用都记录下,长时间不记录,后面会忘记。
ideaIU-2023.1.4.dmg
安装完成后,可在闲鱼购买idea激活码,很便宜。
我之前使用的是ideaIU-2020.1.dmg,最高支持go到 go1.16
如果想使用高版本go,需要更新idea到最新
在个人喜好设置(Preferences)-> 插件中选择安装go, 与当前网速有关,如果无法访问,需要用梯子
安装go时,主要配置 GOROOT 和 GOPATH
按下图选择DownLoad, 然后选择对应版本,开始下载,如果网速过慢,可以把连接复制出来,到官网去下载,然后选择从本地安装
下载完成后
GOPATH 配置
首先打开idea 终端,并输入 go version
go get -u github.com/zeromicro/go-zero@latest
goctl quickstart --service-type mono
启动后,监听8888端口
在命令行执行如下命令:curl -i http://127.0.0.1:8888/ping
至此,gozero 安装成功
比如要生成用户api语言代码,切换到greet目录
goctl api go -api api/greet.api -dir ./api
切换到greet 目录,执行如下命令
goctl model mysql datasource --url="user:password@tcp(localhost:3306)/database" --table dc_user --dir ./api/internal/model
生成的模型文件如下
如果出现这个提示,请切换到greet目录,执行如下命令,把扩展加载进来
go get github.com/zeromicro/go-zero/core/stores/redis@v1.5.4
go get github.com/zeromicro/go-zero/core/stores/sqlx@v1.5.4
GOOS=linux GOARCH=amd64 go build greet.go
生成可执行文件 greet
上传文件到cenos服务器,并安装go后,
在greet 文件的同级下创建目录etc
mkdir etc
touch greet.yaml
将配置添加,并执行文件
./greet
Starting server at 127.0.0.1:8888...
- #下载gorm的mysql
- go get -u gorm.io/driver/mysql
- #下载orm
- go get -u gorm.io/gorm
增加greet.yaml 配置 路径(greet/api/etc/greet.yaml)
- Mysql:
- Datasource: "root:root@tcp(127.0.0.1:3306)/database?charset=utf8mb4&parseTime=True&loc=Local"
- data:
- datasource:
- driver: mysql
- source: "root:root@tcp(127.0.0.1:3306)/database?charset=utf8mb4&parseTime=True&loc=Local"
pool连接mysql
源码如下:
- package pool
-
- import (
- "fmt"
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
- "greet/api/internal/svc"
- )
-
-
- func NewConn(svcCtx *svc.ServiceContext) *gorm.DB {
- dsn := svcCtx.Config.Mysql.Datasource
- gormDb, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
- if err != nil {
- fmt.Printf("Connet MySql Error : %v\n", err)
- return nil
- }
- return gormDb
- }
- package userdao
-
- import (
- "gorm.io/gorm"
- "greet/api/internal/pool"
- "greet/api/internal/svc"
- "greet/api/internal/types"
- )
-
- type UserDao struct {
- svcCtx *svc.ServiceContext
- db *gorm.DB
- }
-
- func NewDbConn(svcCtx *svc.ServiceContext) *UserDao {
- u := new(UserDao)
- u.svcCtx = svcCtx
- u.db = pool.NewConn(svcCtx)
- return u
- }
-
- func (u *UserDao) GetUserById(id int64) *types.UserResp {
- var user types.UserResp
- u.db.Table("user").Where("id=?", id).First(&user)
- return &user
- }
- package user
-
- import (
- "context"
- "fmt"
- "greet/api/internal/dao/userdao"
- "greet/api/internal/svc"
- "greet/api/internal/types"
-
- "github.com/zeromicro/go-zero/core/logx"
- )
-
- type GetUserLogic struct {
- logx.Logger
- ctx context.Context
- svcCtx *svc.ServiceContext
- }
-
- func NewGetUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserLogic {
- return &GetUserLogic{
- Logger: logx.WithContext(ctx),
- ctx: ctx,
- svcCtx: svcCtx,
- }
- }
-
- func (l *GetUserLogic) GetUser(req *types.UserReq) (resp *types.UserResp, err error) {
- // todo: add your logic here and delete this line
- fmt.Printf("请求参数:%v\n", req)
- //操作dao层查询数据
- var userDao = userdao.NewDbConn(l.svcCtx)
- user := userDao.GetUserById(16494798)
- l.Logger.Info("数据查询成功")
- return user, nil
- }
现在可以开始mysql orm 操作了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。