# goctl model `goctl model`命令用于model层代码生成,目前暂时仅支持根据`mysql`指定ddl和datasource来生成。 ```shell $ goctl model -h NAME: goctl model - generate model code USAGE: goctl model command [command options] [arguments...] COMMANDS: mysql generate mysql model OPTIONS: --help, -h show help ``` 从上文中得知,目前可支持`mysql`自命令,即根据mysql数据库ddl和url生成model代码,我们来看看其子命令的帮助信息 ```shell $ goctl model mysql -h NAME: goctl model mysql - generate mysql model USAGE: goctl model mysql command [command options] [arguments...] COMMANDS: ddl generate mysql model from ddl datasource generate model from datasource OPTIONS: --help, -h show help ``` 在上文中我们定义了两个子命令`ddl`和`datasource` # ddl 即通过mysql的ddl语句来生成代码,目前仅限制`create table` ```bash $ goctl model mysql ddl -h NAME: goctl model mysql ddl - generate mysql model from ddl USAGE: goctl model mysql ddl [command options] [arguments...] OPTIONS: --src value, -s value the path or path globbing patterns of the ddl --dir value, -d value the target dir --style value the file naming format, see [https://github.com/tal-tech/go-zero/tree/master/tools/goctl/config/readme.md] --cache, -c generate code with cache [optional] --idea for idea plugin [optional] ``` - `--src`:指定sql文件名(含路径),支持相对路径,支持通配符匹配 - `--dir`:指定代码存放的目标文件夹 - `--style`:指定生成文件名命名方式,参考[config](https://github.com/tal-tech/go-zero/blob/master/tools/goctl/config/readme.md) - `--cache`:指定缓存方式,true:生成带redis缓存代码,false:生成不带redis缓存代码,默认:false - `--idea`:略 ### example 指定文件名user.sql ``` $ goctl model mysql ddl -src user.sql -dir=./model ``` 通配符匹配所有sql文件 ```bash $ goctl model mysql ddl -src "*.sql" -dir=./model ``` # datasource 通过指定mysql连接地址来生成model代码 ```bash $ goctl model mysql datasource -h NAME: goctl model mysql datasource - generate model from datasource USAGE: goctl model mysql datasource [command options] [arguments...] OPTIONS: --url value the data source of database,like "root:password@tcp(127.0.0.1:3306)/database --table value, -t value the table or table globbing patterns in the database --cache, -c generate code with cache [optional] --dir value, -d value the target dir --style value the file naming format, see [https://github.com/tal-tech/go-zero/tree/master/tools/goctl/config/readme.md] --idea for idea plugin [optional] ``` - `--url`:指定数据库连接地址,如`user:password@tcp(127.0.0.1:3306)/gozero` - `--table`:指定表名,支持通配符匹配,即匹配`gozero`数据库中的表 - `--dir`:指定代码存放的目标文件夹 - `--style`:指定生成文件名命名方式,参考[config](https://github.com/tal-tech/go-zero/blob/master/tools/goctl/config/readme.md) - `--cache`:指定缓存方式,true:生成带redis缓存代码,false:生成不带redis缓存代码,默认:false - `--idea`:略 ### example 指定表名user ``` $ goctl model mysql datasource -url="user:password@tcp(127.0.0.1:3306)/gozero" -table="user" -dir ./model ``` 通配符匹配所有user开头的表 ``` $ goctl model mysql datasource -url="user:password@tcp(127.0.0.1:3306)/gozero" -table="user*" -dir ./model ``` # 注意事项 - 1、为了避免解析错误,请尽量使用标准的ddl语法进行生成 - 2、不支持fulltext全文索引,解析会报错 - 3、不生成联合唯一索引的findOne - 4、不生成分页查询代码