go 將數(shù)據(jù)庫轉(zhuǎn)換為gorm結(jié)構(gòu)

gormt

一款 mysql 數(shù)據(jù)庫轉(zhuǎn) struct 工具

交互界面模式

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

下載地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子追他,更是在濱河造成了極大的恐慌便瑟,老刑警劉巖缆毁,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異到涂,居然都是意外死亡脊框,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門践啄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浇雹,“玉大人,你說我怎么就攤上這事屿讽≌蚜椋” “怎么了吠裆?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烂完。 經(jīng)常有香客問我试疙,道長,這世上最難降的妖魔是什么抠蚣? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任祝旷,我火速辦了婚禮,結(jié)果婚禮上嘶窄,老公的妹妹穿的比我還像新娘怀跛。我一直安慰自己,他們只是感情好柄冲,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布吻谋。 她就那樣靜靜地躺著,像睡著了一般现横。 火紅的嫁衣襯著肌膚如雪滨溉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天长赞,我揣著相機與錄音晦攒,去河邊找鬼。 笑死得哆,一個胖子當著我的面吹牛脯颜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贩据,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼栋操,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了饱亮?” 一聲冷哼從身側(cè)響起矾芙,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎近上,沒想到半個月后剔宪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡壹无,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年葱绒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斗锭。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡地淀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岖是,到底是詐尸還是另有隱情帮毁,我是刑警寧澤实苞,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站烈疚,受9級特大地震影響黔牵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胞得,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望屹电。 院中可真熱鬧阶剑,春花似錦、人聲如沸危号。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽外莲。三九已至猪半,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間偷线,已是汗流浹背磨确。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留声邦,地道東北人乏奥。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像亥曹,于是被迫代替她去往敵國和親邓了。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容