分享
  1. 首页
  2. 文章

mysql表结构自动生成golang struct

weixin_34392906 · · 1198 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

a lib for golang , generate mysql table schema to golang struct

mysql表结构自动生成golang struct

github地址

https://github.com/gohouse/converter

安装

  1. 直接下载可执行文件: 下载地址
  2. golang源码包: go get github.com/gohouse/converter

示例表结构

CREATE TABLE `prefix_user` (
 `Id` int(11) NOT NULL AUTO_INCREMENT,
 `Email` varchar(32) NOT NULL DEFAULT '' COMMENT '邮箱',
 `Password` varchar(32) NOT NULL DEFAULT '' COMMENT '密码',
 `CreatedAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'

命令行用法

  1. 下载对应平台的可执行文件, 下载地址
  2. 命令行执行

    # 文件名: table2struct-[$platform].[$version].[$suffix]
    ./table2struct-linux.v0.0.3.bin -file model.go -dsn xxx -table user
  3. 参数说明
-dsn string 数据库dsn配置
-enableJsonTag bool 是否添加json的tag
-file string 保存路径
-packageName string 包名
-prefix string 表前缀
-realNameMethod string 结构体对应的表名
-table string 要迁移的表
-tagKey string tag的key

golang代码简单用法

package main
import (
 "fmt"
 "github.com/gohouse/converter"
)
func main() {
 err := converter.NewTable2Struct().
 SavePath("/home/go/project/model/model.go").
 Dsn("root:root@tcp(localhost:3306)/test?charset=utf8").
 Run()
 fmt.Println(err)
}

golang代码详细用法示例

package main
import (
 "fmt"
 "github.com/gohouse/converter"
)
func main() {
 // 初始化
 t2t := converter.NewTable2Struct()
 // 个性化配置
 t2t.Config(&converter.T2tConfig{
 // 如果字段首字母本来就是大写, 就不添加tag, 默认false添加, true不添加
 RmTagIfUcFirsted: false,
 // tag的字段名字是否转换为小写, 如果本身有大写字母的话, 默认false不转
 TagToLower: false,
 // 字段首字母大写的同时, 是否要把其他字母转换为小写,默认false不转换
 UcFirstOnly: false,
 //// 每个struct放入单独的文件,默认false,放入同一个文件(暂未提供)
 //SeperatFile: false,
 })
 // 开始迁移转换
 err := t2t.
 // 指定某个表,如果不指定,则默认全部表都迁移
 Table("user").
 // 表前缀
 Prefix("prefix_").
 // 是否添加json tag
 EnableJsonTag(true).
 // 生成struct的包名(默认为空的话, 则取名为: package model)
 PackageName("model").
 // tag字段的key值,默认是orm
 TagKey("orm").
 // 是否添加结构体方法获取表名
 RealNameMethod("TableName").
 // 生成的结构体保存路径
 SavePath("/Users/fizz/go/src/github.com/gohouse/gupiao/model/model.go").
 // 数据库dsn,这里可以使用 t2t.DB() 代替,参数为 *sql.DB 对象
 Dsn("root:root@tcp(localhost:3306)/test?charset=utf8").
 // 执行
 Run()
 
 fmt.Println(err)
}

result

package model
import "time"
type User struct {
 Id int `json:"Id" orm:"Id"`
 Email string `json:"Email" orm:"Email"` // 邮箱
 Password string `json:"Password" orm:"Password"` // 密码
 CreatedAt string `json:"CreatedAt" orm:"CreatedAt"`
}
func (*User) TableName() string {
 return "user"
}

有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:weixin_34392906

查看原文:mysql表结构自动生成golang struct

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1198 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏