Skip to content

Latest commit

 

History

History
85 lines (65 loc) · 4.21 KB

19.GoFrame工具链之代码生成.md

File metadata and controls

85 lines (65 loc) · 4.21 KB

GoFrame工具链之代码生成

现在gen命令可以生产controller,service,dao等;

代码生成gen之dao生成

模型生成采用了Active Record设计模式。该命令将会根据数据表名生成对应的目录,该目录名称即数据表包名。自动以下3个目录的文件由dao命令生成:

路径 说明 详细介绍
/internal/dao 数据操作对象 通过对象方式访问底层数据源,底层基于ORM组件实现。往往需要结合entitydo通用使用。该目录下的文件开发者可扩展修改,但是往往没这种必要。
/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