##我的公众号 ![](.readme/a1ea2457.png) ## 查询命令记录 ``` 查询数据库表的信息sql,这边主要是用来查询表的信息: select * from information_schema.TABLES where TABLE_SCHEMA='[数据库名]' 查询数据库表的字段元数据信息sql: show full columns from [数据库名].[表名] 查询结果: Field(字段名) Type(字段类型) Collation NULL(能否为空) Key(是否主键) Default(默认值) Extra Privilege Comment(注释) ``` ## 使用ini配置文件读取工具 ``` 读取ini配置文件的工具:https://ini.unknwon.io/docs/intro/getting_started 配置信息保存路径:reverse/config.ini 支持三类配置: [database] //数据库配置 [common] //通用配置 [type_mapping] //类型映射 按照对应格式进行配置,如果没有找到对应配置则使用数据库通用配置 ``` ## 可拓展支持 ``` 可拓展支持三个接口 ContentGenerate:文件内容拼接 DbConnection: 数据库支持 ReverseCheck: 校验支持 在Engine中通过以下三个方法实现配置 func SetContentGenerate func SetDbConnection func SetReverseCheck ``` ## 方法调用说明 ``` /** * 传入表名和生成路径,数据库名和是否覆盖按照配置文件获取 */ SimpleEngineer(tableName string, path string) /** * 传入表名、生成路径和是否覆盖,数据库名读取配置 */ func (r *DataReverseEngine) SimEngineer(tableName string, path string, cover bool) /** * 传入表名、生成路径和是否覆盖、数据库名 */ func (*DataReverseEngine) Engineer(dbName string, tableName string, path string, cover bool) ``` ## 配置文件例子 ``` [database] //数据库配置 username = 我的数据库账号 password = 我的数据库密码 tcp = @tcp ip = 我的数据库机器Ip port = 3306 database = 我的数据库名 charset = utf8mb4&parseTime=True&loc=Local connMaxLifeTime = 100 maxIdleConns = 10 [common] //通用配置 def = string //默认的映射类型 tagKey = xorm //tag的key suffix = .go //文件后缀 cover = true //存在文件是否进行覆盖,只有配置为false的时候不会覆盖,其他默认为true [type_mapping] //类型映射 double = float64 float = float64 int = int tinyint = int bigint = int time = time.Time timestamp = time.Time date = time.Time dateTime = time.Time ``` ## 方法调用例子 ``` //使用相对路径 e := reverse.NewEngine() e.Engineer("数据库名字", "表名", "filepath", true) //使用绝对路径 e := reverse.NewEngine() e.SetReverseCheck(&support.CheckPathSupport{}) e.Engineer("数据库名字", "表名", "F:/self_project/src/ReverseEngine/filepath", true) ``` ## 问题描述 ``` 1.数据库连接是通过最原始的方式进行,这边后期可以修改成xorm或者其他的orm框架方式 2.读写文件的方法可以做相应的修改,这边也是采用最原生的方式 ``` ## 重复使用 直接运行Main.go方法,在控制台根据提示输入对应的数据库名、表名、生成位置、文件存在是否覆盖等参数来达到直接调用函数使用生成的目的 一次生成结束提示输入Y即可结束程序 启动时通过`panicStop`参数输入,控制程序报错不停止,除非在提示结束的时候输入Y. ## 使用 在config.ini中配置你的数据库信息,最好修改Engine中默认的数据库信息,因为这边的数据库信息都是我乱写的 # mod vendor模式加载包 通过go mod的方式加载的github上面的包会有报红的问题,但是包本身是可以运行的,这样就是会有一个问题,如果你想要点击去看方法的内容,没办法做到 查阅了网上提供的处理方式,通过设置GOPATH 和Go Modules(vgo)可以解决相应的问题,但是我在这样处理之后依然会出现报红的问题 后面通过使用vendor包的方式来处理,就避免了报红的问题 处理步骤如下 : - 通过 go get github.com/kardianos/govendor 命令下载govendor命令 - 通过 go mod vendor 切换到vendor管理