最新的CLI工具版本功能会随着GoFrame框架的最新版本编译,引入如果本地的CLI工具自动化生成的代码与项目的GoFrame框架版本出现兼容性问题时,建议升级项目框架版本,或者自定义安装旧版本的CLI工具。旧版本CLI工具安装方式参考仓库首页介绍:https://github.com/gogf/gf-cli

使用方式

$ gf gen -h
USAGE
    gf gen TYPE [OPTION]

TYPE
    dao     generate dao and model files.
    model   generate model files, note that these generated model files are different from model files
            of command "gf gen dao".

DESCRIPTION
    The "gen" command is designed for multiple generating purposes.
    It's currently supporting generating go files for ORM models.
    Please use "gf gen dao -h" or "gf gen model -h" for specified type help.

注意事项

gen 命令涉及到数据访问相关代码生成时,默认支持的数据库类型为:MySQL/MariaDBPostgreSQLSQLServer

如果需要SQLiteOracle数据库类型支持,需要开发者自己修改源码文件后自行本地手动编译生成CLI工具随后安装,因为这两个数据库的驱动需要CGO支持,无法预编译生成给大家直接使用。




  • No labels

11 Comments

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

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

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

  3. 能否有办法指定哪些表不生成dao/model文件?因为大多数情况,其实指定哪些表不生成的需求还是蛮常见的。

    1. 想办法转成tables参数来控制吧。

  4. model的这个设计方便统一管理对象

    但外层文件统一一层目录这个设计极容易造成类型名冲突

    自定义的数据结构都放在一层文件夹,也不方便进行版本控制。

    但这层文件还不能删除,因为Dao层还需要引用。

    建议Dao层直接引用mobel的internal内部暴漏的公共对象

    model外层文件可以根据需要自行组织结构

    现在的外层是食之无味,弃之有肉。





    1. 1、model中的internal用于工具自动化生成的数据模型存储,由工具来维护,多次生成会覆盖的,开发者不能修改。

      2、model外层目录采用的同一个包来管理模型,而不是内部再分成多个包,其实想要解决的是之前gen model存在的痛点:

      • 包名太多,不好维护。且在每一层的代码中,包名容易冲突,例如api/service/dao中可能都会存在同样一个包名叫做user,引用时容易混淆,降低开发维护效率。
      • 统一包名可以在一个包名下查找所有的、公开的资源,不用考虑包名命名问题,方便统一维护,减少心智负担。
      • 不同的数据结构之间存在复用的可能(例如api/service/dao的输入输出参数),多个包的话复用比较困难,造成代码冗余,不好维护。

      3、在不同的代码分层中,可以依靠不同的命名规范来区别不同业务的资源,不同的业务资源也可以在同一个包/目录下使用不同的文件来进行管理。


  5. 没有办法设置某个字段不输出json吗?

    1. 当然可以的,参考下:对象封装设计

  6. 生成的model代码有几个函数代码有错误,是因为版本关系吗 我的gf是 1.13.2版本

    1. 最好用命令 `gf update`   升一下级