go语言ent教程:使用ent定义数据库的表schema、创建表
背景:
在go语言里,常用的与数据库进行交互的包有:gorm、xorm,今天我们讲解的是:ent ,本ent系列的教程基于Mac开发环境,归属于 go-study 项目。
一、准备工作
1 阅读ent官方的上手教程 https://entgo.io/docs/getting-started
2 创建测试数据库:test
二、跟着ent官方的上手教程动手实践
1 新建模块:entdemo
mkdir entdemo && cd entdemo go mod init entdemo
2 定义schema:User
go run -mod=mod entgo.io/ent/cmd/ent new User
执行完定义schema的命令后,查看entdemo的文件夹结构:
. ├── entdemo │ └── ent │ ├── generate.go │ └── schema │ └── user.go ├── go.mod └── go.sum 4 directories, 4 files
可以看到,在我们生成User时,ent帮我们生成了名为ent的文件夹,在这个文件夹里有2块内容:
schema文件夹:这里是schema的go文件,用于定义表结构
generate.go:生成ent文件的脚本文件,我们一旦修改了schema的go文件,就要执行这个文件重新生成最新的ent代码
3 运行generate.go
go generate ./ent
再次查看entdemo的文件夹结构,就变成了下面这样:
. ├── ent │ ├── client.go │ ├── ent.go │ ├── enttest │ │ └── enttest.go │ ├── generate.go │ ├── hook │ │ └── hook.go │ ├── migrate │ │ ├── migrate.go │ │ └── schema.go │ ├── mutation.go │ ├── predicate │ │ └── predicate.go │ ├── runtime │ │ └── runtime.go │ ├── runtime.go │ ├── schema │ │ ├── time_mixin.go │ │ └── user.go │ ├── tx.go │ ├── user │ │ ├── user.go │ │ └── where.go │ ├── user.go │ ├── user_create.go │ ├── user_delete.go │ ├── user_query.go │ └── user_update.go ├── go.mod ├── go.sum └── main.go 9 directories, 24 files
4 定义入口文件:main.go
package main import ( "context" "log" "entdemo/ent" _ "github.com/go-sql-driver/mysql" ) func main() { client, err := ent.Open("mysql", "root:dev@123456@tcp(localhost:3306)/test?parseTime=True") if err != nil { log.Fatalf("failed opening connection to mysql: %v", err) } defer client.Close() // Run the auto migration tool. if err := client.Schema.Create(context.Background()); err != nil { log.Fatalf("failed creating schema resources: %v", err) } }
当我们运行main.go,ent就会帮我们在mysql的test数据库里创建一个名为:users的表,这只是ent最简单的入门教程,在后续的ent系列教程中,我们将以实际业务场景为例,进行更全面的讲解。
创作不易,您的支持是我继续创作的动力!