内容简介:or
gormt
一款 mysql 数据库转 struct 工具
- 可以将mysql数据库自动生成 golang 结构
- 自动生成快捷操作函数
- 支持索引,外键
- 带大驼峰命名规则
- 带json标签
交互界面模式
./gormt -g=true
命令行模式
./gormt -g=false
1. 通过当前目录config.toml文件配置默认配置项
base: is_dev : false out_dir : ./model # 输出目录 url_tag : json # web url tag(json,db(https://github.com/google/go-querystring)) language : # 语言(English,中 文) db_tag : gorm # 数据库标签(gorm,db) singular_table : false # 单表模式:true:禁用表名复数,false:采用表明复数 参考:gorm.SingularTable simple : false # 简单输出(默认gorm标签不输出) is_out_sql : false # 是否输出 sql 原信息 is_out_func : true # 是否输出 快捷函数 is_web_tag : true # 是否打web标记 is_foreign_key : true # 是否导出外键关联 is_gui : false # 是否ui模式显示 mysql_info: host : 127.0.0.1 port : 3306 username : root password : qwer database : oauth_db
2. 可以使用命令行 工具 更新配置项
./gormt -H=127.0.0.1 -d=oauth_db -p=qwer -u=root --port=3306
3. 查看帮助
./gormt -h ------------------------------------------------------- base on gorm tools for mysql database to golang struct Usage: main [flags] Flags: -d, --database string 数据库名 -f, --foreign 是否导出外键关联 -F, --fun 是否导出函数 -g, --gui 是否ui显示模式 -h, --help help for main -H, --host string 数据库地址.(注意-H为大写) -o, --outdir string 输出目录 -p, --password string 密码. --port int 端口号 (default 3306) -s, --singular 是否禁用表名复数 -l, --url string url标签(json,url) -u, --user string 用户名.
4. 支持gorm 相关属性
- 数据库表,列字段注释支持
- singular_table 表名复数(大驼峰)
- json tag json标签输出
- gorm.Model 基本模型 支持gorm.Model模式导出>>>
- PRIMARY_KEY 将列指定为主键
- UNIQUE 将列指定为唯一
- NOT NULL 将列指定为非 NULL
- INDEX 创建具有或不带名称的索引, 如果多个索引同名则创建复合索引
- UNIQUE_INDEX 和 INDEX 类似,只不过创建的是唯一索引
- 支持外键相关属性 简单带外键模式导出>>>
- 支持函数导出(包括:外键,关联体,索引关...) 简单函数导出示例>>>
5. 示例展示
--->导出结果示例
- 参数:singular_table = false simple = false isJsonTag = true
// 用户信息 type UserAccountTbl struct { ID int `gorm:"primary_key;column:id;type:int(11);not null" json:"-"` // Account string `gorm:"unique;column:account;type:varchar(64);not null" json:"account"` // Password string `gorm:"column:password;type:varchar(64);not null" json:"password"` // AccountType int `gorm:"column:account_type;type:int(11);not null" json:"account_type"` // 帐号类型:0手机号,1邮件 AppKey string `json:"app_key" gorm:"unique_index:UNIQ_5696AD037D3656A4;column:app_key;type:varchar(255);not null"` // authbucket_oauth2_client表的id UserInfoID int `gorm:"unique_index:UNIQ_5696AD037D3656A4;index;column:user_info_id;type:int(11);not null" json:"user_info_id"` // RegTime time.Time `gorm:"column:reg_time;type:datetime" json:"reg_time"` // RegIP string `gorm:"column:reg_ip;type:varchar(15)" json:"reg_ip"` // BundleID string `json:"bundle_id" gorm:"column:bundle_id;type:varchar(255)"` // Describ string `gorm:"column:describ;type:varchar(255)" json:"describ"` // }
- 参数:singular_table = false simple = true isJsonTag = false
--->导出结果
// 用户信息 type UserAccountTbl struct { ID int `gorm:"primary_key"` // Account string `gorm:"unique"` // Password string // AccountType int // 帐号类型:0手机号,1邮件 AppKey string `gorm:"unique_index:UNIQ_5696AD037D3656A4"` // authbucket_oauth2_client表的id UserInfoID int `gorm:"unique_index:UNIQ_5696AD037D3656A4;index"` // RegTime time.Time // RegIP string // BundleID string // Describ string // }
更多>>>
6. 支持函数导出(导出函数只是 gorm 的辅助类函数,完全兼容 gorm 相关函数集)
// FetchByPrimaryKey primay or index 获取唯一内容 func (obj *_UserAccountTblMgr) FetchByPrimaryKey(ID int) (result UserAccountTbl, err error) { err = obj.DB.Table(obj.GetTableName()).Where("id = ?", ID).Find(&result).Error if err == nil && obj.isRelated { { var info UserInfoTbl // 用户信息 err = obj.DB.Table("user_info_tbl").Where("id = ?", result.UserInfoTblID).Find(&info).Error if err != nil { return } result.UserInfoTbl = info } } return }
更多>>>
函数调用示例>>>
7. 构建
make windows make linux make mac
or
go generate
8. 下一步计划
- 更新,删除功能函数添加
- 优化
9. 提供一个windows 可视化工具
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 将数据库转换为gorm结构
- python中数字与C语言中double结构转换
- 如何使用BPF将SSH会话转换为结构化事件
- Golang 将数据库转换为gorm结构和RESTful api
- vue学习—Convert HTML string to AST,如何将html字符串转换为ast数组结构
- JavaScript进阶系列-类型转换、隐式类型转换
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First HTML5 Programming
Eric Freeman、Elisabeth Robson / O'Reilly Media / 2011-10-18 / USD 49.99
What can HTML5 do for you? If you're a web developer looking to use this new version of HTML, you might be wondering how much has really changed. Head First HTML5 Programming introduces the key featur......一起来看看 《Head First HTML5 Programming》 这本书的介绍吧!