ent 是一个简单而又强大的Go实体框架
- 简单地使用数据库结构作为图结构。
- 使用Go代码定义结构
- 基于代码生成的静态类型
- 容易地进行数据库查询和图遍历
- 容易地使用Go模板扩展和自定义
应用场景
ent
非常适合处理各种复杂的关系,定义好实体和实体之间的关系,就可以快速得到各种想要的数据
核心概念
- Schema: 描述一个实体的定义以及他与其他实体的关系
- Edges:实体与实体之间的关系称为
边
===>edge
使用步骤
- 安装
go get entgo.io/ent/cmd/ent
- 创建
Schema
(在当前项目的终端运行以下命令)
ent init --target internal/ent/schema User
运行之后会在internal/ent/schema
目录下生成一个user.go
文件
- 编辑
user.go
文件,如图所示
- 生成代码
(在当前项目终端执行命令 )
ent generate ./internal/ent/schema
运行之后会自动创建以下文件:
- 创建实体
增、删、改、查
- 新增
- 修改
- 查询
- 删除
关联操作 (多表操作) ===> 即: 关系处理
-
ent
提供了图查询的能力,实际上在关系数据库中的表现就是relation
-
建立一个新的实体
Car
,User
有多个Car
,Car
属于某个User
-
在当前项目终端执行
ent init --target internal/ent/schema Car Group
效果如下
- 编辑
Car
实体 (添加字段)
- 编辑
Group
实体 (添加字段)
- 创建 One To Many 的关系
一个用户拥有多辆汽车,但是车只能拥有一个所有者
User ===> Car (One ==> Many)
Car ===> User (Many ==> One)
- 为
User Schema
添加Car
这条边
- 在当前项目的终端执行命令
ent generate ./internal/ent/schema