现在gen命令可以生产controller,service,dao等;
模型生成采用了Active Record
设计模式。该命令将会根据数据表名生成对应的目录,该目录名称即数据表包名。自动以下3
个目录的文件由dao
命令生成:
路径 | 说明 | 详细介绍 |
---|---|---|
/internal/dao |
数据操作对象 | 通过对象方式访问底层数据源,底层基于ORM 组件实现。往往需要结合entity 和do 通用使用。该目录下的文件开发者可扩展修改,但是往往没这种必要。 |
/internal/model/do |
数据转换模型 | 数据转换模型用于业务模型到数据模型的转换,由工具维护,用户不能修改。工具每次生成代码文件将会覆盖该目录。关于do 文件的介绍请参考:数据模型与业务模型DAO-工程痛点及改进利用指针属性和do对象实现灵活的修改接口 |
/internal/model/entity |
数据模型 | 数据模型由工具维护,用户不能修改。工具每次生成代码文件将会覆盖该目录。 |
2、model
中的模型分为两类:数据模型和业务模型。
**数据模型:**通过CLI
工具自动生成 model/entity
目录文件,数据库的数据表都会生成到该目录下,这个目录下的文件对应的模型为数据模型。数据模型即与数据表一一对应的数据结构,开发者往往不需要去修改并且也不应该去修改,数据模型只有在数据表结构变更时通过CLI
工具自动更新。数据模型由CLI
工具生成及统一维护。
**业务模型:**业务模型即是与业务相关的数据结构,按需定义,例如service
的输入输出数据结构定义、内部的一些数据结构定义等。业务模型由开发者根据业务需要自行定义维护,定义到model
目录下。
3、dao
中的文件按照数据表名称进行命名,一个数据表一个文件及其一个对应的DAO
对象。操作数据表即是通过DAO
对象以及相关操作方法实现。dao
操作采用规范化设计,必须传递ctx
参数,并在生成的代码中必须通过Ctx
或者Transaction
方法创建对象来链式操作数据表。
配置文件hack/config.yaml
# CLI tool, only in development environment.
# https://goframe.org/pages/viewpage.action?pageId=3673173
gfcli:
docker:
build: "-a amd64 -s linux -p temp -ew"
tagPrefixes:
- my.image.pub/my-app
# 数据库配置
gen:
dao:
link: mysql:root:DDii123456@tcp(10.96.81.240:3306)/tmp
操作:
D:\17.gfcli> gf gen -h
USAGE
gf gen COMMAND [OPTION]
COMMAND
ctrl parse api definitions to generate controller/sdk go files
dao automatically generate go files for dao/do/entity
enums parse go files in current project and generate enums go file
pb parse proto files and generate protobuf go files
pbentity generate entity message files in protobuf3 format
service parse struct and associated functions from packages to generate service go file
DESCRIPTION
The "gen" command is designed for multiple generating purposes.
It's currently supporting generating go files for ORM models, protobuf and protobuf entity files.
Please use "gf gen dao -h" for specified type help.
PS D:\17.gfcli> gf gen dao -r sys_ -t sys_user
generated: internal/dao/user.go
generated: internal/dao/internal/user.go
generated: internal/model/do/user.go
generated: internal/model/entity/user.go
done!
D:\17.gfcli> tree /f .\model
卷 Data 的文件夹 PATH 列表
卷序列号为 DA91-D877
D:\17.GFCLI\
internal/
├── dao
│ ├── internal
│ │ └── user.go
│ └── user.go
├── model
│ ├── do
│ │ └── user.go
│ └── entity
│ └── user.go