Go Queryset 教程
1. 项目目录结构及介绍
Go Queryset 是一个用于自动生成 GORM 查询集的工具。其基本目录结构通常包括以下部分:
your_project/
├── main.go # 应用程序入口点
├── models/ # 存放模型(model)的目录
│ ├── user.go # 示例用户模型
│ └── ...
├── queries/ # 自动生成的查询集(queryset)目录
│ ├── user_queryset.go # 用户模型对应的查询集
│ └── ...
└── go.mod # 项目依赖管理文件
└── go.sum # 依赖校验文件
main.go
: 应用程序的主程序,一般在这里初始化数据库连接并调用生成的查询集。models/
: 包含你的业务模型,每个.go
文件代表一个数据库表模型。queries/
: 自动由goqueryset
生成的查询集代码,提供了对对应模型的CRUD操作。go.mod
&go.sum
: 用来管理项目依赖的文件。
2. 项目启动文件介绍
在 main.go
文件中,你会看到如何初始化数据库连接以及如何使用生成的查询集。例如:
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
// 导入自动生成的查询集
"github.com/yourusername/yourproject/queries"
// 你的模型导入
"github.com/yourusername/yourproject/models"
)
func main() {
db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic("failed to connect database")
}
defer db.Close()
// 自动迁移模型
db.AutoMigrate(&models.User{})
// 使用查询集进行操作
userQS := queries.NewUserQS(db)
users, _ := userQS.All()
for _, user := range users {
println(user.Name)
}
}
这里的 NewUserQS(db)
创建了一个 User
模型的查询集实例,你可以使用它来进行增删查改操作。
3. 项目的配置文件介绍
Go Queryset 不需要单独的配置文件,它的配置主要通过命令行参数来指定。当你运行 goqueryset
生成查询集时,你需要提供模型文件的位置 (-in
) 以及输出查询集的文件名 (-out
)。此外,模型文件内还需要包含特定的注解,例如:
//go:generate goqueryset -in models.go -out models_queryset.go
// gen:qs
type User struct {
gorm.Model
Name string
}
以上述方式定义模型后,通过执行 go generate ./...
在当前目录下就可以自动创建查询集文件。
请注意,实际使用中可能还需要配置数据库连接字符串等信息,这些通常会在 main.go
或其他配置文件中处理,而不是 Go Queryset 的一部分。
遵循上述说明,你应该能够成功地集成并使用 Go Queryset 生成 GORM 的查询集。如果你遇到任何问题或需要进一步的帮助,请查阅项目的官方文档或者开源社区的资源。