113 lines
3.7 KiB
Markdown
113 lines
3.7 KiB
Markdown
|
|
|
|||
|
|
## 查询命令记录
|
|||
|
|
```
|
|||
|
|
查询数据库表的信息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中默认的数据库信息,因为这边的数据库信息都是我乱写的
|