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

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • golang 将数据库转换为 gorm 结构
未分類
2020 年 5 月 21 日

golang 将数据库转换为 gorm 结构

golang 将数据库转换为 gorm 结构

資深大佬 : xie1xiao1jun 50

gormt

一款 mysql 数据库转 struct 工具

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

golang 将数据库转换为 gorm 结构

1. 通过当前目录 config.toml 文件配置默认配置项

out_dir : "."  # 输出目录 singular_table : false  # 表名复数,是否大驼峰构建 参考:gorm.SingularTable simple : false #简单输出 is_out_sql : false # 是否输出 sql 原信息 is_out_func : true # 是否输出 快捷函数 is_json_tag : false #是否打 json 标记 is_foreign_key : true #是否导出外键关联 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   数据库名   -h, --help              help for main   -H, --host string       数据库地址.(注意-H 为大写)   -o, --outdir string     输出目录   -p, --password string   密码.       --port int          端口号 (default 3306)   -s, --singular          是否禁用表名复数   -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 可视化工具

golang 将数据库转换为 gorm 结构 golang 将数据库转换为 gorm 结构 golang 将数据库转换为 gorm 结构 golang 将数据库转换为 gorm 结构

下载地址

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

  • 資深大佬 : littlewing

    手动点赞,之前用过一个 chrome 插件,现在找不着了

  • 主 資深大佬 : xie1xiao1jun

  • 資深大佬 : sun522198558

    貌似很早就点赞了

  • 主 資深大佬 : xie1xiao1jun

    @sun522198558 谢谢,因为最近更新了很多很实用的功能。所以又推广一波。

  • 資深大佬 : sun522198558

    @xie1xiao1jun #4 大佬牛逼

  • 主 資深大佬 : xie1xiao1jun

    @sun522198558

    这次主要添加了快捷功能函数导出功能。函数请看:
    https://github.com/xxjwxc/gormt/blob/master/data/view/genfunc/genfunc_test.go

    绝对开发中非常实用且方便。

    索引,外键都自动构建函数出来。直接使用。

    last : 不是大佬,只是为了社区做一点点贡献。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

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

51la

4563博客

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