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

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

单表生成

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值