关于框架项目工程规范介绍请查看 章节。
使用方式
大部分场景下,进入项目根目录执行 gf gen dao
即可。以下为命令行帮助信息。
配置示例
/hack/config.yaml
gen:
dao:
- link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
tables: "order,products"
jsonCase: "CamelLower"
path: "./my-app"
prefix: "primary_"
tables: "user, userDetail"
# sqlite需要自行编译带sqlite驱动的gf,下载库代码后修改路径文件(gf\cmd\gf\internal\cmd\cmd_gen_dao.go)的import包,取消注释即可。sqlite驱动依赖了gcc
- link: "sqlite:./file.db"
参数说明
使用示例
仓库地址:https://github.com/gogf/focus-single
1、以下3
个目录的文件由dao
命令生成:
路径 | 说明 | 详细介绍 |
---|---|---|
/internal/dao | 数据操作对象 | 通过对象方式访问底层数据源,底层基于ORM组件实现。往往需要结合entity 和do 通用使用。该目录下的文件开发者可扩展修改,但是往往没这种必要。 |
/internal/model/do | 数据转换模型 | 数据转换模型用于业务模型到数据模型的转换,由工具维护,用户不能修改。 工具每次生成代码文件将会覆盖该目录。 |
/internal/model/entity | 数据模型 |
2、model
中的模型分为两类:数据模型和业务模型。
数据模型:通过CLI
工具自动生成 model/entity
目录文件,数据库的数据表都会生成到该目录下,这个目录下的文件对应的模型为数据模型。数据模型即与数据表一一对应的数据结构,开发者往往不需要去修改并且也不应该去修改,数据模型只有在数据表结构变更时通过CLI
工具自动更新。数据模型由CLI
工具生成及统一维护。
业务模型:业务模型即是与业务相关的数据结构,按需定义,例如service
的输入输出数据结构定义、内部的一些数据结构定义等。业务模型由开发者根据业务需要自行定义维护,定义到model
目录下。
3、dao
中的文件按照数据表名称进行命名,一个数据表一个文件及其一个对应的DAO
对象。操作数据表即是通过DAO
对象以及相关操作方法实现。dao
操作采用规范化设计,必须传递ctx
参数,并在生成的代码中必须通过Ctx
或者Transaction
方法创建对象来链式操作数据表。
注意事项
gen dao
命令涉及到数据访问相关代码生成时,默认支持常用的若干类型数据库。如果需要Oracle
数据库类型支持,需要开发者自己修改源码文件后自行本地手动编译生成CLI
工具随后安装,因为这两个数据库的驱动需要CGO
支持,无法预编译生成给大家直接使用。
关于bool
类型对应的数据表字段
由于大部分数据库类型都没有bool
类型的数据表字段类型,我们推荐使用bit(1)
来代替bool
类型。gen dao
命令会自动识别bit(1)
数据表字段并生成bool
类型的属性。此外,我们不推荐使用作为bool
类型。
例如,表字段:
生成的属性: