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.gogetlogic.go ,调用 model 的 CRUD 方法。例如:
createlogic.go
deletelogic.go
updatelogic.go
getlogic.go

9. 启动服务

 

© Cheney Wang 2024