使用方式:gf gen TYPE [OPTION]

1、dao代码生成(推荐)

dao命令用于生成dao数据访问对象文件,以及model数据结构定义文件。推荐使用配置文件来管理生成规则。

配置文件示例:

  1. [gfcli]
  2. [[gfcli.gen.dao]]
  3. link = "mysql:root:12345678@tcp(127.0.0.1:3306)/order"
  4. group = "order"
  5. prefix = "order_"
  6. tables = ""
  7. [[gfcli.gen.dao]]
  8. link = "mysql:root:12345678@tcp(127.0.0.1:3306)/user"
  9. group = "user"
  10. prefix = "user_"
  11. tables = "user,userDetail,userScore"

配置参数说明:

名称必须默认值含义示例
gfcli.gen.dao
dao代码生成配置项,可以有多个配置项构成数组,支持多个数据库生成。-
link
分为两部分,第一部分表示你连接的数据库类型mysql, postgresql等, 第二部分就是连接数据库的dsn信息。具体请参考 ORM使用配置 章节。
  1. mysql:root:12345678@tcp(127.0.0.1:3306)/user
mod
用于生成go文件的import计算,默认情况下会自动读取当前项目根目录下的go.mod获取。github.com/gogf/gf-demos
groupdefault在数据库配置中的数据库分组名称。

default

order

user

prefix
生成数据库对象及文件的前缀,以便区分不同数据库或者不同数据库中的相同表名,防止数据表同名覆盖。

order

user

tables
指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。user, userDetail
path./app生成daomodel文件的存储目录地址./app
remove-prefix
删除数据表的指定前缀名称。gf_

生成的代码结构示例:

gen 代码生成 - 图1

其中:

  1. dao/internal 以及model/internal 下面的文件由工具生成,多次生成会被覆盖,因此不要手动修改。采用internal包名的目的是仅作为daomodel的内部包引用,不对外开放。
  2. dao 目录下的文件 可以做一些数据库的定制化操作,通过工具多次生成不会覆盖,但是更多建议用户在自己的service中实现。
  3. model目录下的文件,可以做自定义的一些数据结构定义,通过工具多次生成不会覆盖。

2、model代码生成(不再推荐)

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

  1. 数据表名.go 自定义文件,开发者可以自由定义填充的代码文件,仅会生成一次,每一次模型生成不会覆盖。
  2. 数据表名_entity.go 表结构文件,根据数据表结构生成的结构体定义文件,包含字段注释。数据表在外部变更后,可使用gen命令重复生成更新该文件。
  3. 数据表名_model.go 表模型文件,为数据表提供了许多便捷的CURD操作方法,并可直接查询返回该表的结构体对象。数据表在外部变更后,可使用gen命令重复生成更新该文件。

数据表模型生成支持的数据库类型为:MySQL/MariaDBPostgreSQLSQLiteSQLServer。目前暂不支持Oracle,若有需求请联系作者。