go-zero 框架入门:结合 PostgreSQL 构建 CRUD 应用
date
Apr 24, 2024
slug
build-go-zero-postgresql-crud-demo
status
Published
tags
Go
summary
本文介绍如何使用 go-zero 和 PostgresSQL 构建一个基本的 CRUD demo
type
Post
在最近学习 go-zero 的过程中,我注意到网络上关于 go-zero 的讨论相当有限,因此缺乏很多优质资料用于学习,且官方文档对新手的友好度不高。作为一个初学者,为了构建一个 crud demo,我查阅了很多资料,最后在 AI 的帮助写实现了 crud demo,下面是我总结的操作步骤。
0. 配置开发环境
首先你需要确保正确的配置了 Go 的开发环境。
接下来的演示都是基于 MacOS 系统的。
1. 创建项目
在终端执行以下命令创建项目:
检查 goctl 是否可用,在终端输入
goctl
如果返回 command not found: goctl
,可能是因为环境变量配置有问题,需要把 $GOPATH/bin
添加到 PATH
中,执行下面命令:添加后,运行
source ~/.zshrc
或重新打开终端,以确保更改生效。2. 定义数据模型,例如 user.sql
在项目根目录创建 user.sql 文件,添加以下内容:
然后去数据库中创建这张表。
3. 生成 CRUD 代码
使用go-zero提供的
goctl
工具,根据数据库表结构自动生成CRUD操作的代码这个命令会连接到指定的PostgreSQL数据库,读取
users
表的结构,然后在 ./model
目录下生成相应的代码文件。生成的文件包括:usermodel.go
: 包含对users
表进行CRUD操作的方法。
usermodel_gen.go
: 包含一些辅助方法和结构体定义。
4. 定义 API 文件
在
api
目录下创建 user.api
文件,定义API接口:5. 生成 API 代码
使用
goctl
工具根据 user.api
文件生成 API 代码:这个命令会在当前目录下生成以下文件和目录:
user.go
: 服务的入口文件。
internal
: 包含服务的内部实现代码。
etc
: 包含服务的配置文件。
6. 配置 Postgres 数据库连接
在
internal/config/config.go
文件中添加数据库配置:在
internal/svc/servicecontext.go
文件中初始化数据库连接和 model:这个文件定义了
ServiceContext
结构体,包含了服务的配置和 UsersModel
实例。NewServiceContext
函数根据配置创建一个新的 ServiceContext
实例,并初始化数据库连接和 UsersModel
。在
etc/user-api.yaml
中添加数据库配置:7. 添加 PostgreSQL 的驱动
安装 PostgreSQL 的驱动程序:
然后,在
internal/svc/servicecontext.go
文件的开头添加以下导入语句:注意,我们使用下划线(
_
)作为导入包的别名。这是因为我们不直接使用这个包,但是我们需要它来注册PostgreSQL驱动程序。8. 编写 CRUD 逻辑
修改
internal/logic
下的 createlogic.go
和 getlogic.go
,调用 model 的 CRUD 方法。例如:createlogic.go
deletelogic.go
updatelogic.go
getlogic.go