【店小二】公告:
新
| | |
功能介绍
1.支持多种数据库的建表 sql转自定义模型, 其中包含(pg、oracle、mysql)等数据库; 建表语句, 建表语句, 建表语句(重要的说3遍)
2.在转换 sql 的时候, 需要确认下是否需要切换处理类型, 暂时支持3种处理方式(normal, postgresql, oracle), 默认: normal.
3.支持自定义过滤不需要的字段, 多个字段通过 , 隔开 说明: 不能在 sql 中包含注释内容(即:-- xxx
或# xxx
); 由于此工具是通过 ; 来分割语句处理. 所以 normal 状态下可以同时处理多个建表语句; postgresql 和 oracle 由于需要解析注释, 只支持单个建表语句.
模板说明
会用到的语法说明
if
条件
{{if 条件}}
// 条件成立时执行
{{else if 另一条件}}
// 另一条件成立时执行
{{else}}
// 以上条件都不成立时执行
{{end}}
// 关系符
eq 如果arg1 == arg2则返回真
ne 如果arg1 != arg2则返回真
lt 如果arg1 < arg2则返回真
le 如果arg1 <= arg2则返回真
gt 如果arg1 > arg2则返回真
ge 如果arg1 >= arg2则返回真
- 示例:
{{if .IsAdmin}}
<p>欢迎管理员</p>
{{else}}
<p>欢迎普通用户</p>
{{end}}
for
遍历
// 遍历
{{- range 变量 }}
// 遍历元素
{{- end }}
// 带索引的遍历
{{- range $index, $user := .Users }}
<p>{{$index}}: {{$user.Name}} ({{$user.Age}}岁)</p>
{{- end }}
- 说明:
{{- range }}
中 - 是用于清空换行或空白符 - 示例
<ul>
{{- range .Users }}
<li>{{.Name}} - {{.Age}} 岁</li>
{{- end }}
</ul>
模板介绍
- 字段介绍
字段 | 说明 | 类型 |
---|---|---|
TableName | 表名 | string |
Fields | 字段名 | objects |
No | 序号 | int |
NotNull | 不为空 | bool |
AutoIncrement | 自增 | bool |
PrimaryKey | 主键 | bool |
Name | 字段名 | string |
ModelType | 模型字段类型 | string |
DbType | 数据库字段类型 | string |
Comment | 注释 | string |
Default | 默认值 | string |
- 函数介绍
函数名 | 说明 | 示例 |
---|---|---|
addLine | 追加换行符 | |
toFirstUpper | 首字母大写 | |
toFirstUpper | 首字母大写 | |
toFirstLower | 首字母小写 | |
sub | 求差 | |
hump | 将db字段按驼峰处理 | hump test_a 处理后 TestA |
len | 长度 |
示例模板
sql转struct
type {{ hump .TableName }} struct {
{{- range .Fields }}
{{ hump .Name }} {{ .ModelType }} `json:"{{ .Name }}"` {{ if .Comment }} // {{ .Comment }} {{ end }}
{{- end }}
}
示例
mysql 建表语句
CREATE TABLE if not exists user (
id int NOT NULL AUTO_INCREMENT,
name varchar(10) NOT NULL COMMENT '姓名',
gender tinyint NOT NULL DEFAULT 0 COMMENT '性别 0-未知 1-男 2-女',
age int NOT NULL COMMENT '年龄',
created_date datetime DEFAULT CURRENT_TIMESTAMP,
updated_date datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
处理后
type User struct {
Id int `json:"id"`
Name string `json:"name"` // 姓名
Gender int `json:"gender"` // 性别 0-未知 1-男 2-女
Age int `json:"age"` // 年龄
CreatedDate string `json:"created_date"`
UpdatedDate string `json:"updated_date"`
}