{"id":13413676,"url":"https://github.com/xxjwxc/gormt","last_synced_at":"2025-05-13T22:10:43.530Z","repository":{"id":37412455,"uuid":"185033017","full_name":"xxjwxc/gormt","owner":"xxjwxc","description":"database to golang struct","archived":false,"fork":false,"pushed_at":"2025-04-14T18:57:45.000Z","size":48006,"stargazers_count":2399,"open_issues_count":57,"forks_count":360,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-04-30T14:09:20.301Z","etag":null,"topics":["database","function","go","golang","gorm","mapping","mysql","orm","tools"],"latest_commit_sha":null,"homepage":"https://xxjwxc.github.io/post/gormt/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xxjwxc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["xxjwxc"],"custom":["https://www.paypal.me/xxjwxc"],"patreon":"xxjwxc"}},"created_at":"2019-05-05T13:10:26.000Z","updated_at":"2025-04-29T08:16:34.000Z","dependencies_parsed_at":"2023-02-14T13:15:38.698Z","dependency_job_id":"f9c12ba6-e881-4041-b38c-ecf8ee3ad367","html_url":"https://github.com/xxjwxc/gormt","commit_stats":{"total_commits":318,"total_committers":51,"mean_commits":6.235294117647059,"dds":0.5377358490566038,"last_synced_commit":"d49eacc7934464c904f80c2722d36f730ee09736"},"previous_names":["xie1xiao1jun/gormt","xie1xiao1jun/gorm-tools"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxjwxc%2Fgormt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxjwxc%2Fgormt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxjwxc%2Fgormt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxjwxc%2Fgormt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xxjwxc","download_url":"https://codeload.github.com/xxjwxc/gormt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254036833,"owners_count":22003654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","function","go","golang","gorm","mapping","mysql","orm","tools"],"created_at":"2024-07-30T20:01:46.172Z","updated_at":"2025-05-13T22:10:43.483Z","avatar_url":"https://github.com/xxjwxc.png","language":"Go","funding_links":["https://github.com/sponsors/xxjwxc","https://www.paypal.me/xxjwxc","https://patreon.com/xxjwxc"],"categories":["ORM","Go","网络相关库","Repositories","Relational Databases","Database"],"sub_categories":["HTTP Clients","HTTP客户端","ORM","OpenGL","Datbase to Struct"],"readme":"[![Build Status](https://travis-ci.org/xxjwxc/gormt.svg?branch=master)](https://travis-ci.org/xxjwxc/gormt)\n[![Go Report Card](https://goreportcard.com/badge/github.com/xxjwxc/gormt)](https://goreportcard.com/report/github.com/xxjwxc/gormt)\n[![GoDoc](https://godoc.org/github.com/xxjwxc/gormt?status.svg)](https://godoc.org/github.com/xxjwxc/gormt)\n[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go) \n\u003ca href=\"https://hellogithub.com/repository/1d5e3365a5084198aa1c79fb7953f6e7\" target=\"_blank\"\u003e\u003cimg src=\"https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=1d5e3365a5084198aa1c79fb7953f6e7\u0026claim_uid=6IkmGoxiuN4LWFn\u0026theme=small\" alt=\"Featured｜HelloGitHub\" /\u003e\u003c/a\u003e\n \n## [中文文档](README_zh_cn.md)\n\n###  mysql database to golang struct conversion tools base on [gorm(v1/v2)](https://github.com/go-gorm/gorm)，You can automatically generate golang sturct from mysql database. big Camel-Case Name Rule, JSON tag. \n\n\n\n## gui support\n\n![show](/image/gormt/ui_en.gif)\n\n```\n./gormt -g=true\n```\n\n## cmd support\n\n![show](/image/gormt/out.gif)\n```\n./gormt -g=false\n```\n\n## install\n\n```\ngo get -u -v github.com/xxjwxc/gormt@latest\n```\n\nor: [Dowloading](https://github.com/xxjwxc/gormt/releases)\n\n--------\n\n## 1. Configure default configuration items through the current directory config.yml file\nnote: for latest version of config format, please check /data/config/MyIni.go\n```yml\nout_dir : \"./model\"  # out dir\nurl_tag : json # web url tag(json,db(https://github.com/google/go-querystring))\nlanguage :  # language(English,中 文)\ndb_tag : gorm # DB tag(gorm,db)\nsimple : false #simple output\nis_out_sql : false # Whether to output sql\nis_out_func : true # Whether to output function\nis_foreign_key : true # Whether to mark foreign key or not\nis_gui : false # Whether to operate on gui\nis_table_name : false # Whether to out GetTableName/column function\nis_null_to_point : false # database is 'DEFAULT NULL' then set element type as point\nis_web_tag: false\nis_web_tag_pk_hidden: false\ntable_prefix: \"\" #table prefix\ntable_names: \"\" # Specified table generation, multiple tables with , separated\nis_column_name: true # Whether to generate column names\nis_out_file_by_table_name: false # Whether to generate multiple models based on table names\ndb_info :\n    host : \"127.0.0.1\"\n    port : 3306\n    username : \"root\"\n    password : \"qwer\"\n    database : \"oauth_db\"\n    type: 0 # database type (0:mysql , 1:sqlite , 2:mssql)\nself_type_define: # Custom data type mapping\n    datetime: time.Time\n    date: time.Time\nout_file_name: \"\" # Custom build file name\nweb_tag_type: 0 # json tag 0: Small Camel-Case 1: _\n\n```\n## 2. get help\n```\n./gormt --help\nor\n./gormt -h\n\n-------------------------------------------------------\nbase on gorm tools for mysql database to golang struct\n\nUsage:\n  main [flags]\n\nFlags:\n  -d, --database string   数据库名\n  -f, --foreign           是否导出外键关联\n  -F, --fun               是否导出函数\n  -g, --gui               是否ui显示模式\n  -h, --help              help for main\n  -H, --host string       数据库地址.(注意-H为大写)\n  -o, --outdir string     输出目录\n  -p, --password string   密码.\n      --port int          端口号 (default 3306)\n  -s, --singular          是否禁用表名复数\n  -b, --table_names string 表名称  \n  -l, --url string        url标签(json,url)\n  -u, --user string       用户名.\n  \n```\n## 3. Can be updated configuration items using command line tools\n```\n./gormt -H=127.0.0.1 -d=oauth_db -p=qwer -u=root --port=3306 -F=true\n```\n\n## 4. Support for gorm attributes\n   \n- Database tables, column field annotation support\n- json tag json tag output\n- gorm.Model [Support export gorm.model\u003e\u003e\u003e](doc/export.md)\n- PRIMARY_KEY\tSpecifies column as primary key\n- UNIQUE\tSpecifies column as unique\n- NOT NULL\tSpecifies column as NOT NULL\n- INDEX\tCreate index with or without name, same name creates composite indexes\n- UNIQUE_INDEX\tLike INDEX, create unique index\n- Support foreign key related properties [Support export gorm.model\u003e\u003e\u003e](doc/export.md)\n- Support function export (foreign key, association, index , unique and more)[Support export function \u003e\u003e\u003e](https://github.com/xxjwxc/gormt/blob/master/data/view/genfunc/genfunc_test.go)\n- model.Condition{} sql link\n\n### You can enrich data types in [def](data/view/cnf/def.go) \n\n## 5. Demonstration\n\n- sql:\n```\nCREATE TABLE `user_account_tbl` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `account` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,\n  `password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,\n  `account_type` int(11) NOT NULL DEFAULT '0' COMMENT '帐号类型:0手机号，1邮件',\n  `app_key` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT 'authbucket_oauth2_client表的id',\n  `user_info_tbl_id` int(11) NOT NULL,\n  `reg_time` datetime DEFAULT NULL,\n  `reg_ip` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,\n  `bundle_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,\n  `describ` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,\n  PRIMARY KEY (`id`) USING BTREE,\n  UNIQUE KEY `account` (`account`) USING BTREE,\n  KEY `user_info_id` (`user_info_tbl_id`) USING BTREE,\n  CONSTRAINT `user_account_tbl_ibfk_1` FOREIGN KEY (`user_info_tbl_id`) REFERENCES `user_info_tbl` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT\n) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='用户账号'\n```\n\n###### ---\u003eDerived results\n\n```\n// UserAccountTbl 用户账号\ntype UserAccountTbl struct {\n\tID            int    `gorm:\"primary_key\"`\n\tAccount       string `gorm:\"unique\"`\n\tPassword      string\n\tAccountType   int         // 帐号类型:0手机号，1邮件\n\tAppKey        string      // authbucket_oauth2_client表的id\n\tUserInfoTblID int         `gorm:\"index\"`\n\tUserInfoTbl   UserInfoTbl `gorm:\"association_foreignkey:user_info_tbl_id;foreignkey:id\"` // 用户信息\n\tRegTime       time.Time\n\tRegIP         string\n\tBundleID      string\n\tDescrib       string\n}\n```\n\n### [more\u003e\u003e\u003e](doc/export.md)\n\n## 6. support func export\n### The exported function is only the auxiliary class function of Gorm, and calls Gorm completely\n```\n// FetchByPrimaryKey primary or index 获取唯一内容\nfunc (obj *_UserAccountTblMgr) FetchByPrimaryKey(ID int) (result UserAccountTbl, err error) {\n\terr = obj.DB.Table(obj.GetTableName()).Where(\"id = ?\", ID).Find(\u0026result).Error\n\tif err == nil \u0026\u0026 obj.isRelated {\n\t\t{\n\t\t\tvar info UserInfoTbl // 用户信息\n\t\t\terr = obj.DB.Table(\"user_info_tbl\").Where(\"id = ?\", result.UserInfoTblID).Find(\u0026info).Error\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tresult.UserInfoTbl = info\n\t\t}\n\t}\n\n\treturn\n}\n\n```\n\n### [more\u003e\u003e\u003e](https://github.com/xxjwxc/gormt/tree/master/doc/func.md)\n### [how to use call style\u003e\u003e\u003e](https://github.com/xxjwxc/gormt/blob/master/data/view/genfunc/genfunc_test.go)\n\n## 7. page \n### [Use of paging query in gormt](https://xiaojujiang.blog.csdn.net/article/details/122315454?spm=1001.2014.3001.5502)\n\n## 8. build\n```\nmake windows\nmake linux\nmake mac\n```\nor\n\n```\ngo generate\n```\n\n### note : in windows not support utf-8 style . ASCALL model\n- Switch encoding mode\n```\nCHCP 65001 \n```\n\n### column notes default\n\n- Add a comment to the column starting with `[@gorm default:'test']`\n- example `[@gorm default:'test';-\u003e;\u003c-:create]this is my notes` Indicates that the default value is 'test',can read/creat/write\n- Use of foreign key notes`[@fk tableName.columnName]this is my notes` Represents the 'columnName' column associated with the 'tableName'\n  \n## 9. one windows gui tools\n\n![1](/image/gormt/1.png)\n\n![2](/image/gormt/2.jpg)\n\n![3](/image/gormt/3.jpg)\n\n![4](/image/gormt/4.jpg)\n\n[Download](https://github.com/xxjwxc/gormt/releases/download/v0.3.8/v1.0.zip)\n\n\n\n- ###### [link](https://xxjwxc.github.io/post/gormtools/)\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/xxjwxc/gormt.svg)](https://starchart.cc/xxjwxc/gormt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxjwxc%2Fgormt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxxjwxc%2Fgormt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxjwxc%2Fgormt/lists"}