golang mysql 自动建表_mysql表结构自动生成golang struct
a lib for golang , generate mysql table schema to golang struct
mysql表结构自动生成golang struct
github地址
安装
直接下载可执行文件: 下载地址
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='用户表'
命令行用法
下载对应平台的可执行文件, 下载地址
命令行执行
# 文件名: table2struct-[$platform].[$version].[$suffix]
./table2struct-linux.v0.0.3.bin -file model.go -dsn xxx -table user
参数说明
-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"
}
golang mysql 自动建表_mysql表结构自动生成golang struct相关推荐
- mysql 安建分区_mysql表分区
范围分区: CREATE TABLE BIGTABLE ( ID INT, SNPTIME DATETIME NOT NULL, VALUE VARCHAR(20), PRIMARY KEY (SNP ...
- mysql 建表覆盖原先表_mysql表与表之间建关系
一对多 定义一张部门员工表 id name gender dep_name dep_desc 1 yzy male 教学部 教书育人 2 yolo male 外交部 形象大使 3 zmm female ...
- mysql创建外键的表_Mysql表创建外键报错解决方案
Mysql表创建外键报错解决方案,字段,名字,数据库,更新时间,歧义 Mysql表创建外键报错解决方案 易采站长站,站长之家为您整理了Mysql表创建外键报错解决方案的相关内容. 数据库表A: CRE ...
- mysql 锁定表_mysql表锁定技术
如何进行MySQL数据库表的故障检测 如何修复MySQL数据库表 锁定表的方法 防止客户机的请求互相干扰或者服务器与维护程序相互干扰的方法主要有多种.如果你关闭数据库,就可以保证服务器和myisamc ...
- mysql关系模式 学生表_MySQL——表与表之间的关系
1.表关系分类: 总体可以分为三类: 一对一 .一对多(多对一) .多对多 2.如何区分表与表之间是什么关系? #分析步骤: #多对一/一对多 #1.站在左表的角度去看右表(情况一) 如果左表中的一条 ...
- mysql sql 取树结构_MySQL 树形结构 根据指定节点 获取其所有叶子节点
背景说明 需求:MySQL树形结构, 根据指定的节点,获取其下属的所有叶子节点. 叶子节点:如果一个节点下不再有子节点,则为叶子节点. 问题分析 1.可以使用类似Java这种面向对象的语言,对节点集合 ...
- mysql按照时间自动创建分区表_mysql 表分区、按时间函数分区、删除分区、自动添加表分区...
mysql 表分区的几种方式: RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区. LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进 ...
- mysql 数据类型 有备注_MySQL表结构(含数据类型、字段备注注释)导出成Excel
像我们使用的数据库图形化工具Navicat Premium.Navicat for XXX.SQLyog.DataGrip等等都可以导出表结构SQL脚本,但是当我们要将数据库整理成文档时导出表结构的s ...
- mysql约束条件整型_MySQL 表的操作
表的操作 创建表的完整语法: create table 表名( 字段名1 字段类型[(宽度) 约束条件], 字段名1 字段类型[(宽度) 约束条件], 字段名1 字段类型[(宽度) 约束条件] ); ...
最新文章
- 开发者和矿工合二为一将是比特币世界的灾难
- iOS 通知观察者的被调函数不一定运行在主线程
- 【转载】微服务,我们需要哪些基础框架?
- JSP简单练习-JSP指令
- Linux下安装rpm出现error: Failed dependencies
- Entityframework Code First 系列
- 使用依赖注入的ASP.NET Core 2.0用户角色基础动态菜单管理
- python 插入数据库 b“Incorrect syntax near ‘,‘.DB-Lib error message 20018
- HenCoder Android 开发进阶:自定义 View 1-3 drawText() 文字的绘制
- CCF计算机职业资格认证考试201312-2试题及答案
- 美国卡内基梅隆大学计算机排名,美国卡内基梅隆大学世界排名情况
- WebSocket网页聊天室
- 大厂面试快问快答,10分钟搞定MySQL夺命20问,你都能接住吗?
- Python数据分析-LOL英雄画像 !
- 【Android TV】 遥控器Enter键无法调出软键盘
- 自定义Tab切换+自定义CheckBox+light7无限滑动/下拉刷新
- read.html5.qq.com,如何通过第三方QQ登录网站首页
- 爬取热榜数据,通过Qt界面显示,代码可直接运行(python3经典编程案例)
- 基于kintex UltraScale XCKU040的双路QSFP+光纤PCIe卡383 光纤PCIe卡
- 环境信息术语(HJ/T 416—2007)
热门文章
- 安装win10的笔记本有10个地方需要微调
- html打开时按钮自动触发事件,html在用户按下按键时触发的事件属性onkeydown
- 计算机直线的绘制实验报告,dda画直线实验报告
- python求输入数字的平方、如果平方运算后小于50则退出_Python练习题(三)
- 第一章第一节:C++简介与学习方法
- MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处
- LeetCode 64 最小路径和
- 1299. 将每个元素替换为右侧最大元素
- Python 数据全部显示,去掉中间省略号(pandas、...)
- JS 调试(debug)