当前位置:   article > 正文

mac m1 使用IntelliJ IDEA 安装go插件和go 并使用go-zero_idea go插件

idea go插件

最近发现go比较火,就花时间看了下,基本语法和协程都比较好理解,新手建议使用go-zero,简单容易上手,只是ide我选择继续沿用idea,那我把自己从工具到框架的使用都记录下,长时间不记录,后面会忘记。

一、安装IntelliJ IDEA

1、在官网下载 

ideaIU-2023.1.4.dmg

2、安装

  安装完成后,可在闲鱼购买idea激活码,很便宜。

  我之前使用的是ideaIU-2020.1.dmg,最高支持go到 go1.16

 如果想使用高版本go,需要更新idea到最新

3、安装go插件 和 goctl(go-zero框架开发)

在个人喜好设置(Preferences)-> 插件中选择安装go, 与当前网速有关,如果无法访问,需要用梯子

 4、安装go1.19.9

安装go时,主要配置 GOROOT 和 GOPATH

按下图选择DownLoad, 然后选择对应版本,开始下载,如果网速过慢,可以把连接复制出来,到官网去下载,然后选择从本地安装

4.1 在线安装

 

下载完成后 

 4.2 本地选择

 GOPATH 配置

 5、安装完成后,测试

首先打开idea 终端,并输入 go version

 6、 下载goctl 源码

go get -u github.com/zeromicro/go-zero@latest

二、安装go zero

1、安装gozero 并启动单体服务

goctl quickstart --service-type mono

启动后,监听8888端口 

在命令行执行如下命令:curl -i http://127.0.0.1:8888/ping  

至此,gozero 安装成功 

2、gozero 项目目录结构如下

3、生成API信息

比如要生成用户api语言代码,切换到greet目录

  

4、编辑api文件,注意单体中service 名称需要一样

5、根据api语言文件生成go的代码

goctl api go -api  api/greet.api -dir ./api

 6、生成模型

切换到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

7、在mac下生成linux centos 下可执行文件

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...

8、gorm模型操作

8.1 安装gorm
  1. #下载gorm的mysql
  2. go get -u gorm.io/driver/mysql
  3. #下载orm
  4. go get -u gorm.io/gorm
8.2 配置mysql连接

增加greet.yaml 配置 路径(greet/api/etc/greet.yaml)

  1. Mysql:
  2. Datasource: "root:root@tcp(127.0.0.1:3306)/database?charset=utf8mb4&parseTime=True&loc=Local"
  3. data:
  4. datasource:
  5. driver: mysql
  6. source: "root:root@tcp(127.0.0.1:3306)/database?charset=utf8mb4&parseTime=True&loc=Local"

8.3 创建连接工厂函数

pool连接mysql 

源码如下:

  1. package pool
  2. import (
  3. "fmt"
  4. "gorm.io/driver/mysql"
  5. "gorm.io/gorm"
  6. "greet/api/internal/svc"
  7. )
  8. func NewConn(svcCtx *svc.ServiceContext) *gorm.DB {
  9. dsn := svcCtx.Config.Mysql.Datasource
  10. gormDb, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  11. if err != nil {
  12. fmt.Printf("Connet MySql Error : %v\n", err)
  13. return nil
  14. }
  15. return gormDb
  16. }
8.4 编写dao层代码
  1. package userdao
  2. import (
  3. "gorm.io/gorm"
  4. "greet/api/internal/pool"
  5. "greet/api/internal/svc"
  6. "greet/api/internal/types"
  7. )
  8. type UserDao struct {
  9. svcCtx *svc.ServiceContext
  10. db *gorm.DB
  11. }
  12. func NewDbConn(svcCtx *svc.ServiceContext) *UserDao {
  13. u := new(UserDao)
  14. u.svcCtx = svcCtx
  15. u.db = pool.NewConn(svcCtx)
  16. return u
  17. }
  18. func (u *UserDao) GetUserById(id int64) *types.UserResp {
  19. var user types.UserResp
  20. u.db.Table("user").Where("id=?", id).First(&user)
  21. return &user
  22. }
8.5 编写logic代码
  1. package user
  2. import (
  3. "context"
  4. "fmt"
  5. "greet/api/internal/dao/userdao"
  6. "greet/api/internal/svc"
  7. "greet/api/internal/types"
  8. "github.com/zeromicro/go-zero/core/logx"
  9. )
  10. type GetUserLogic struct {
  11. logx.Logger
  12. ctx context.Context
  13. svcCtx *svc.ServiceContext
  14. }
  15. func NewGetUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserLogic {
  16. return &GetUserLogic{
  17. Logger: logx.WithContext(ctx),
  18. ctx: ctx,
  19. svcCtx: svcCtx,
  20. }
  21. }
  22. func (l *GetUserLogic) GetUser(req *types.UserReq) (resp *types.UserResp, err error) {
  23. // todo: add your logic here and delete this line
  24. fmt.Printf("请求参数:%v\n", req)
  25. //操作dao层查询数据
  26. var userDao = userdao.NewDbConn(l.svcCtx)
  27. user := userDao.GetUserById(16494798)
  28. l.Logger.Info("数据查询成功")
  29. return user, nil
  30. }

现在可以开始mysql orm 操作了

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号