以下流程假定你用的Windows系统
安装
首先是安装代理,解决依赖包的下载问题
# goproxy.io 还是有网络问题,所以用 goproxy.cn
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
如果之前设置GOPROXY
,会报错环境变量不能覆盖。
warning: go env -w GOPATH=... does not override conflicting OS environment variable
解决办法:右键 我的电脑 -> 高级系统设置 -> 环境变量 找到GOPROXY
双击编辑之
准备就绪,下载并安装gen-model
go get -u github.com/DaoYoung/gen-model
# GOBIN 目录下会有一个gen-model.exe,没有的话进到gen-model, 手动 go install
用法
说明:下面提到的例子用了student表
CREATE TABLE `student` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`real_name` VARCHAR(50) NOT NULL COLLATE 'utf8mb4_unicode_ci',
`age` MEDIUMINT(3) NOT NULL,
`sex` TINYINT(1) NOT NULL,
`birthday` DATE NOT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8mb4_unicode_ci'
ENGINE=InnoDB
;
- 初始化生成配置文件
.gen-model.yaml
cd ${your_project_dir}
gen-model init
- 修改
.gen-model.yaml
配置里的mysql.*
gen.searchTableName
,运行create
命令,生成表对应的struct结构体
gen-model create #默认会读取前面配置文件里的值
- 创建本地字段映射文件
gen-model create --persist=local-mapper
# 会报错,因为第2步里已经生成了结构体,如果确定覆盖可以追加参数 `-f=true`
gen-model create --persist=local-mapper -f=true
- 拷贝
${struct}FieldMapper.yaml
, 命名为${struct}VOFieldMapper.yaml
,里面删除2个字段,生成新的结构体
gen-model create --source=local-mapper --forceCover=true --modelSuffix=VO
# it will generate `${struct}VO.go`
同样的,你也能把mapper 存到DB里, 只要把上面
local-mapper
替换为db-mapper
。这么做的好处是你可以跨项目管理结构体了。
注意,运行的mysql用户必须有 建库/建表/插入数据 的权限其他命令,通过
-h
查阅
gen-model -h # 整个应用的帮助
gen-model create -h # 子命令行 `create` 的帮助