gen-model 把 mysql 数据库表转为结构体 golang struct

以下流程假定你用的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
;
  1. 初始化生成配置文件.gen-model.yaml
cd ${your_project_dir}
gen-model init
  1. 修改.gen-model.yaml配置里的mysql.* gen.searchTableName,运行create 命令,生成表对应的struct结构体
gen-model create #默认会读取前面配置文件里的值
  1. 创建本地字段映射文件
gen-model create --persist=local-mapper

# 会报错,因为第2步里已经生成了结构体,如果确定覆盖可以追加参数 `-f=true`

gen-model create --persist=local-mapper -f=true
1.gif
  1. 拷贝${struct}FieldMapper.yaml, 命名为 ${struct}VOFieldMapper.yaml,里面删除2个字段,生成新的结构体
gen-model create --source=local-mapper --forceCover=true --modelSuffix=VO
# it will generate `${struct}VO.go`
2.gif
  1. 同样的,你也能把mapper 存到DB里, 只要把上面local-mapper替换为 db-mapper。这么做的好处是你可以跨项目管理结构体了。
    注意,运行的mysql用户必须有 建库/建表/插入数据 的权限

  2. 其他命令,通过-h查阅

gen-model -h # 整个应用的帮助
gen-model create -h # 子命令行 `create` 的帮助

你可能感兴趣的:(gen-model 把 mysql 数据库表转为结构体 golang struct)