使用方式:gf gen TYPE [OPTION]

1、dao代码生成(推荐)

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

配置文件示例:

[gfcli]
    [[gfcli.gen.dao]]
        link   = "mysql:root:12345678@tcp(127.0.0.1:3306)/order"
        group  = "order"
        prefix = "order_"
        tables = "" 
    [[gfcli.gen.dao]]
        link   = "mysql:root:12345678@tcp(127.0.0.1:3306)/user"
        group  = "user"
        prefix = "user_"
        tables = "user,userDetail,userScore"

配置参数说明:

名称必须默认值含义示例
gfcli.gen.dao
dao代码生成配置项,可以有多个配置项构成数组,支持多个数据库生成。-
link
分为两部分,第一部分表示你连接的数据库类型mysql, postgresql等, 第二部分就是连接数据库的dsn信息。具体请参考 ORM使用配置 章节。
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_

生成的代码结构示例:

其中:

  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,若有需求请联系作者。



  • No labels

6 Comments

  1. 没有检查gf版本直接用gf gen dao生成,发现无法读取配置文件,执行 gf update 后,即可读取配置文件,在此标记一下!

  2. gf gen dao生成代码的时候,遇到int64类型能否指定json转换的时候转化为字符串?每次都要修改这个,要不然js里面读取的时候精度不够,好麻烦。

    1. 如果有定制化的需求,你可以给对应的结构体实现 MarshalJSON() ([]byte, error) 接口即可,例如:

  3. 可否增加一个配置,使得生成的数据模型结构体中的元素,不添加json的tag。这样可以直接使用结构体转json时,首字母大写。

    1. 请参考最新版本文档:数据规范-gen dao

      1. 效率真高,感谢