暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

go-zero 微服务框架入门及实战之单体服务接mysql

一盎司科技 2021-08-23
6115

在初步完成go-zero框架的单体服务后,接下来会介绍更符合实际业务需求的实现。一般来说,数据是需要保存到数据库之中的,如常规的增删改查功能。

go-zero框架支持多种数据库,此处以mysql为例。


环境

操作系统:Windows10

go版本:go1.16.5

go-zero版本: 1.1.18

开发工具:Visual Studio Code 1.58.2

mysql: 5.7.26

redis:3.2.100


流程

按照go-zero框架数据库处理的一般流程,首先要准备好编写sql语句的文件,然后使用命令自动生成增删改查的处理逻辑,相当快捷方便。


编写SQL

此处的脚本和普通的sql格式是完全一样的,可以直接从数据库导出,如下图所示:


生成逻辑

sql文件所在目录执行命令,自动生成处理逻辑相关的文件,如下所示:

goctl model mysql ddl -src todo.sql -dir . -c

关于命令的格式可以查看相关文档,一般替换文件路径和文件名即可。其中,生成的主要是*model.go结尾的文件,包括结构体及增删改查相关函数等,如下所示:


实现API

在生成数据库操作处理文件后,就可以开始编写业务处理逻辑了,下面分别实现写入和查询api。由于默认生成的是带缓存的数据库操作处理函数,所以会用到redis。


加入mysql和redis配置相关实现(config/config.go)及具体配置(etc/todo-api.yaml):


上下文中加入数据库及表相关初始化处理(svc/servicecontext.go),如下所示:


▶写入api逻辑使用生成的数据库接口写入数据,实现相关函数,如下所示:


然后执行命令启动服务:

go run todo.go -f etc/todo-api.yaml


使用postman测试效果如下:


数据库中数据如下(执行两次post后的数据):


查询api逻辑略有不同,需要自行编写查询接口。这是因为查询参数是自定义的,而且是多个参数关联查询。具体实现过程,如下所示:


查询函数实现(model/todomodel.go):



业务逻辑实现(gettodologic.go):


然后执行命令启动服务:

go run todo.go -f etc/todo-api.yaml


使用postman测试效果如下:


经过上面的修改,基本的示例单体服务对接mysql数据的相关操作已经完成,可以满足业务验证的需要后面我们将进一步完善,如增加rpc调用,实现内部服务间的通信。


说明

以上示例代码,我们会更新到githubgitee,可根据需要下载,具体路径如下:

github:https://github.com/iounce/go-zero-demo

gitee:https://gitee.com/iounce_admin/go-zero-demo


文章转载自一盎司科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论