话不多说直接上代码
测试用表:
单表生成
简单生成一个表对应的模型文件
//测试将mysql单表生成 go struct model
package main
import (
"github.com/pulingfu/tblschema"
)
输入命令go run main.go
func main() {
//简单用法
simple := tblschema.NewTblToStructHandler()
simple.
SetDsn("root:tiger@(127.0.0.1:3306)/pulingfu?charset=utf8mb4&parseTime=True&loc=Local").
SetTableName("my_user1").
//默认路径为当前目录
SetSavePath("./simple/model.go").
// SetPackageInfo("plf_test_package", "", "").
GenerateTblStruct()
}
直接运行go run main.go就生成如下表对应的模型文件
============我是分界线+++++++++++++++++++++++++
还可以设置包名、生成路径、标签、生成结构体名、成员名等如下:
//测试将mysql单表生成 go struct model
package main
import (
"github.com/pulingfu/tblschema"
)
输入命令go run main.go
func main() {
///复杂用法
th := tblschema.NewTblToStructHandler()
th = th.
//设置数据库dsn连接地址
SetDsn("root:tiger@(127.0.0.1:3306)/pulingfu?charset=utf8mb4&parseTime=True&loc=Local").
//设置生成的model包名
SetPackageInfo("tbl_my_user", "prefix_", "_suffix").
//设置要生成哪张数据库表的结构
SetTableName("my_user").
//设置结构体字段名 骆驼写法/首字母大写 不设置则默认骆驼写法如 user_name => UserName
//写法、前缀、后缀
SetTblStructNameInfo(tblschema.CAMEL_CASE, "a我是_table_name前缀_", "_b我是_table_name后缀").
//设置行信息 写法、排序方式、前缀、后缀
SeTblStructColumnNameInfo(tblschema.CAMEL_CASE, "", "a我是_column_name前缀_", "_b我是_column_name后缀").
//生成结构体标记的orm类型 默认为gorm
// orm => `orm:"column_name"`
// gorm => `gorm:"column:column_name"`
SetStructOrmTag("gorm").
//设置其他结构体标签,如json,request
// SetOtherTag("json", "request").
// SetOtherTag("json").
//设置生成模型的保存位置
SetSavePath("./tbl_my_user/model.go").
GenerateTblStruct()
///************/
//继承上面的配置生成另外 的结构,如time类型对应成string
th.
//依次为包名、包名前缀、包名后缀
SetPackageInfo("tbl_my_user_timestring", "prefix_", "_suffix").
SetOtherTags("").
SetSavePath("./tbl_my_user_time_string/model.go").
//设置数据库time类型变为结构体string 默认为time.Time
SetTimeType(tblschema.TIMETYPE_STRING).
//设置结构体名 骆驼写法/首字母大写 不设置则默CameCase写法如 tbl_user => TblUser
SetTblStructNameInfo(tblschema.CAMEL_CASE, "", "").
//设置字段排序方式FIELD_ORDER_ORDINAL_POSITION 按数据库字段建立顺序 默认字典顺序
SeTblStructColumnNameInfo(tblschema.CAMEL_CASE, tblschema.FIELD_ORDER_FIELD_NAME, "", "").
GenerateTblStruct()
}
go run main.go就会生成如下文件
============我是分界线+++++++++++++++++++++++++
批量生成多表
直接上代码
package main
import "github.com/pulingfu/tblschema"
//调用一键生成表结构API自动生成表结构
//输入命令go run main.go
func main() {
th := tblschema.NewTblToStructHandler()
//简易
th.SetDsn("root:tiger@(127.0.0.1:3306)/pulingfu?charset=utf8mb4&parseTime=True&loc=Local").
GenerateAllTblStruct()
//复杂
// th.SetDsn("root:tiger@(127.0.0.1:3306)/pulingfu?charset=utf8mb4&parseTime=True&loc=Local").
// SetStructOrmTag("gorm").
// SeTblStructColumnNameInfo(
// tblschema.CAMEL_CASE, tblschema.
// FIELD_ORDER_FIELD_NAME, "column_prefix_", "_column_suffix",
// ).SetTblStructNameInfo(tblschema.CAMEL_CASE, "tbl_prefix_", "_tbl_suffix").
// GenerateAllTblStruct()
}
go run main.go就会生成如下容
============我是分界线+++++++++++++++++++++++++
自定义批量生成内容
package main
import (
"fmt"
"github.com/pulingfu/tblschema"
)
//自定义生成想要的表结构
func main() {
th := tblschema.NewTblToStructHandler().
SetDsn("root:tiger@(127.0.0.1:3306)/pulingfu?charset=utf8mb4&parseTime=True&loc=Local").
// 添加其他标签?比如json
SetOtherTags("json").
//设置包名
SetPackageInfo("all_tbl_model", "", "")
for _, tname := range th.GetAllTableNames() {
th.
//设置
SetSavePath(fmt.Sprintf("./all_tbl_model/%s.go", tname)).
SetTableName(tname).
GenerateTblStruct()
}
}
执行命令 go run main.go 就会生成如下内容