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系列教程中,我们将以实际业务场景为例,进行更全面的讲解。

 

创作不易,您的支持是我继续创作的动力!

 

posted @ 2023-09-27 21:12  jamstack  阅读(450)  评论(0编辑  收藏  举报