跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • gormt 稳定版发布了(mysql 数据库转换工具)
未分類
15 5 月 2020

gormt 稳定版发布了(mysql 数据库转换工具)

gormt 稳定版发布了(mysql 数据库转换工具)

資深大佬 : xie1xiao1jun 0

gormt

一款 mysql 数据库转 struct 工具

  • 可以将 mysql 数据库自动生成 golang 结构
  • 自动生成快捷操作函数
  • 支持索引,外键
  • 带大驼峰命名规则
  • 带 json 标签

交互界面模式

gormt 稳定版发布了(mysql 数据库转换工具)

./gormt -g=true 

命令行模式

gormt 稳定版发布了(mysql 数据库转换工具)

./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. 下一步计划

  • 更新,删除功能函数添加
  • 优化

下载地址

  • 传送门
大佬有話說 (4)

  • 資深大佬 : xdays

    赞!

  • 資深大佬 : qq1340691923

    顶!

  • 主 資深大佬 : xie1xiao1jun

    @xdays
    @qq1340691923
    [跳跳]

  • 資深大佬 : pmispig

    赞
    感觉这种代码生成器不如用 python/perl 来写会更丝滑

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具