还在为mysql数据库表手写go struct模型? 干货满满教你根据mysql数据表结构自动生成golang struct模型文件,批量生成model.go文件,单个生成model.go文件

您所在的位置:网站首页 批量生成数据表 还在为mysql数据库表手写go struct模型? 干货满满教你根据mysql数据表结构自动生成golang struct模型文件,批量生成model.go文件,单个生成model.go文件

还在为mysql数据库表手写go struct模型? 干货满满教你根据mysql数据表结构自动生成golang struct模型文件,批量生成model.go文件,单个生成model.go文件

2024-07-08 02:06| 来源: 网络整理| 查看: 265

话不多说直接上代码 测试用表: 在这里插入图片描述

单表生成

简单生成一个表对应的模型文件

//测试将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 就会生成如下内容 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3