go-sqlgin
简介
Go语言生成数据模型SQL基本操作接口
支持范围校验、图片处理、时间处理
使用方法
-
go get gitee.com/go-utils/sqlgen
-
将gen整个目录拷贝到任何地方,ssh命令进入该目录
-
修改gen.go中main方法参数
func main() {
err := generate(
&TblUser{},
"Sql",
"Uid",
"AddUriRoot",
"DeleteUriRoot",
)
if err != nil {
fmt.Println(err.Error())
}
}
说明:
- TblUser替换为待生成sql的数据模型,不能空,注意:此处要传指针
- common.Sql为全局的MySql连接,类型应该是:*sql.DB(库:database/sql),不能空
- Uid为主键名,使用大驼峰命名;可空,默认为Id
- AddUriRoot,从数据库读出数据时,img标签字段会作为实参调用,可空。
- DeleteUriRoot,写入数据库前,img标签字段会作为实参调用,可空
- 4、5都是一个形参和返回都是string的方法,如:AddFun(s string)string
- 如果4、5未定义,tbl标签有img时,将不生成图片处理代码
-
go run gen.go
-
控制台会打印生成数据库表的SQL,修改下可用作建表语句
-
生成的代码在output目录下
第一个参数说明:&TblUser{}
如果TblUser有实现ToDB接口,则数据写入数据库前,会自动调用该方法,便于对数据做一些入库前的处理
如果TblUser有实现FromDB接口,则数据从数据库读出后,会自动调用该方法
以下两种写法都支持
func (m TblUser) FromDB() {
//方法一
}
func (m TblUser) ToDB() {
//方法二
}
func (m *TblUser) FromDB() {
//方法三
}
func (m *TblUser) ToDB() {
//方法四
}
如果第一个参数不传指针,则方法三和方法四将无法识别
Tbl Tag介绍
type TblUser struct {
Id int64
LastIp string
NickName string `tbl:"len:100"`
Avatar string `tbl:"img len:100"`
Lang string `tbl:"bt:[0:120]"`
CreateTime time.Time `tbl:"time"`
UpdateTime time.Time `tbl:"time"`
}
tbl支持的标签有:
-
img
图片地址入库、出库前处理;支持[]string;注意:[]*string这种是不认的
-
len:20
字符最大长度为20,如果是非结构性字段,则比较序列化后的字符长度,兼容xorm的varchar tag
-
bt:(5:10]
数字范围校验,支持以下情形: (5:10)、(5:10]、[5:10)、[5:10]、[10:10]
-
time
时间,为DateTime类型
-
updated
时间,更新的时候会自动取当前时间
-
created
时间,创建的时候会自动设置当前时间
字段说明:
字段支持Array、Slice、Struct,读写会自动转换为json字符串;
此类数据,尽量要设置len标签,否则一旦超出范围,则无法正常读出
不支持指针