gormt
一款 mysql 數(shù)據(jù)庫轉(zhuǎn) struct 工具
- 可以將mysql數(shù)據(jù)庫自動生成 golang 結(jié)構(gòu)
- 自動生成快捷操作函數(shù)
- 支持索引,外鍵
- 帶大駝峰命名規(guī)則
- 帶json標簽
交互界面模式
ui_cn.gif
./gormt -g=true
命令行模式
out.gif
./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 # 數(shù)據(jù)庫標簽(gorm,db)
singular_table : false # 單表模式:true:禁用表名復數(shù),false:采用表明復數(shù) 參考:gorm.SingularTable
simple : false # 簡單輸出(默認gorm標簽不輸出)
is_out_sql : false # 是否輸出 sql 原信息
is_out_func : true # 是否輸出 快捷函數(shù)
is_url_tag : true # 是否打web標記
is_foreign_key : true # 是否導出外鍵關(guān)聯(lián)
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 數(shù)據(jù)庫名
-f, --foreign 是否導出外鍵關(guān)聯(lián)
-F, --fun 是否導出函數(shù)
-g, --gui 是否ui顯示模式
-h, --help help for main
-H, --host string 數(shù)據(jù)庫地址.(注意-H為大寫)
-o, --outdir string 輸出目錄
-p, --password string 密碼.
--port int 端口號 (default 3306)
-s, --singular 是否禁用表名復數(shù)
-l, --url string url標簽(json,url)
-u, --user string 用戶名.
4. 支持gorm 相關(guān)屬性
- 數(shù)據(jù)庫表,列字段注釋支持
- singular_table 表名復數(shù)(大駝峰)
- json tag json標簽輸出
- gorm.Model 基本模型 支持gorm.Model模式導出>>>
- PRIMARY_KEY 將列指定為主鍵
- UNIQUE 將列指定為唯一
- NOT NULL 將列指定為非 NULL
- INDEX 創(chuàng)建具有或不帶名稱的索引, 如果多個索引同名則創(chuàng)建復合索引
- UNIQUE_INDEX 和 INDEX 類似,只不過創(chuàng)建的是唯一索引
- 支持外鍵相關(guān)屬性 簡單帶外鍵模式導出>>>
- 支持函數(shù)導出(包括:外鍵,關(guān)聯(lián)體济舆,索引關(guān)...)簡單函數(shù)導出示例>>>
5. 示例展示
--->導出結(jié)果示例
- 參數(shù):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"` //
}
- 參數(shù):singular_table = false simple = true isJsonTag = false
--->導出結(jié)果
// 用戶信息
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. 支持函數(shù)導出(導出函數(shù)只是 gorm 的輔助類函數(shù)挨稿,完全兼容 gorm 相關(guān)函數(shù)集)
// FetchByPrimaryKey primay or index 獲取唯一內(nèi)容
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
}
更多>>>
函數(shù)調(diào)用示例>>>
7. 構(gòu)建
make windows
make linux
make mac
or
go generate
8. 下一步計劃
- 更新蒜鸡,刪除功能函數(shù)添加
- 優(yōu)化
9. 提供一個windows 可視化工具
1.png
2.jpg
3.jpg
4.jpg