- 安装
go get github.com/go-xorm/cmd/xorm
go get github.com/go-xorm/xorm
- 修改源码
cd %GOPATH/pkg/mod/github.com/go-xorm/cmd/xorm@v0.0.0-20190426080617-f87981e709a1/templates/goxorm
sudo vim config
genJson=1 # 改为 1
cd %GOPATH/pkg/mod/github.com/go-xorm/cmd/xorm@v0.0.0-20190426080617-f87981e709a1
sudo vim go.go
/*if genJson {if include(ignoreColumnsJSON, col.Name) {tags = append(tags, "json:\"-\"")
} else {tags = append(tags, "json:\""+col.Name+"\"")
}
}
if len(res) > 0 {tags = append(tags, "xorm:\""+strings.Join(res, " ")+"\"")
}
if len(tags) > 0 {return "`" + strings.Join(tags, " ") + "`"
} else {return ""}*/
if genJson {if include(ignoreColumnsJSON, col.Name) {tags = append(tags, "json:\"-\"")
} else {tags = append(tags, "json:\""+transfer(col.Name)+"\"")
}
}
if len(res) > 0 {tags = append(tags, "json:\""+transfer(col.Name)+"\"")
}
if len(tags) > 0 {return "`" + strings.Join(tags, " ") + "`" + " " + "//" + " "+ strings.Join(res, " ")
} else {return ""}
}
func transfer(s string) string {data := make([]byte, 0, len(s))
j := false
k := false
num := len(s) - 1
for i := 0; i <= num; i++ {d := s[i]
if k == false && d >= 'A' && d <= 'Z' {k = true}
if d >= 'a' && d <= 'z' && (j || k == false) {
if i != 0 {d = d - 32}
j = false
k = true
}
if k && d == '_' && num > i && s[i+1] >= 'a' && s[i+1] <= 'z' {
j = true
continue
}
data = append(data, d)
}
return string(data[:])
}
- 创建一个项目 test
- 编写脚本
Mac:
#!/bin/bash
host=ip
port=3306
username=root
password= 密码
database= 数据库名
charset=utf8mb4
echo "======================= 开始生成对应的机构体 ======================="
xorm reverse mysql $username:$password@($host:$port)/$database?charset=$charset %GOPATH%\pkg\mod\github.com\go-xorm\cmd\xorm@v0.0.0-20190426080617-f87981e709a1\templates\go .\model\v$1
echo "======================= 开始生成对应的机构体 ======================="
Win:
#!/bin/bash
host=ip
port=3306
username=root
password= 密码
database= 数据库名
charset=utf8mb4
echo "======================= 开始生成对应的机构体 ======================="
xorm reverse mysql $username:$password@($host:$port)/$database?charset=$charset %GOPATH%\pkg\mod\github.com\go-xorm\cmd\xorm@v0.0.0-20190426080617-f87981e709a1\templates\go .\model\v$1
echo "======================= 开始生成对应的机构体 ======================="
- 执行
./mac-xorm-sql-struct.sh 1 # 1 是版本
正文完