GO在线工具集
首页
搜索
致Boss
【店小二】公告:

sql转自定义模型
51  |   |   |  5

功能介绍

1.支持多种数据库的建表 sql转自定义模型, 其中包含(pg、oracle、mysql)等数据库; 建表语句, 建表语句, 建表语句(重要的说3遍)
2.在转换 sql 的时候, 需要确认下是否需要切换处理类型, 暂时支持3种处理方式(normal, postgresql, oracle), 默认: normal.
3.支持自定义过滤不需要的字段, 多个字段通过 , 隔开 说明: 不能在 sql 中包含注释内容(即: -- xxx# xxx); 由于此工具是通过 ; 来分割语句处理. 所以 normal 状态下可以同时处理多个建表语句; postgresqloracle 由于需要解析注释, 只支持单个建表语句.


模板说明

会用到的语法说明
  • 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"`  
}