- Notifications
You must be signed in to change notification settings - Fork361
xxjwxc/gormt
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
mysql database to golang struct conversion tools base ongorm(v1/v2),You can automatically generate golang sturct from mysql database. big Camel-Case Name Rule, JSON tag.
./gormt -g=true
./gormt -g=false
go get -u -v github.com/xxjwxc/gormt@latest
or:Dowloading
note: for latest version of config format, please check /data/config/MyIni.go
out_dir:"./model"# out dirurl_tag:json# web url tag(json,db(https://github.com/google/go-querystring))language:# language(English,中 文)db_tag:gorm# DB tag(gorm,db)simple:false#simple outputis_out_sql:false# Whether to output sqlis_out_func:true# Whether to output functionis_foreign_key:true# Whether to mark foreign key or notis_gui:false# Whether to operate on guiis_table_name:false# Whether to out GetTableName/column functionis_null_to_point:false# database is 'DEFAULT NULL' then set element type as pointis_web_tag:falseis_web_tag_pk_hidden:falsetable_prefix:""#table prefixtable_names:""# Specified table generation, multiple tables with , separatedis_column_name:true# Whether to generate column namesis_out_file_by_table_name:false# Whether to generate multiple models based on table namesdb_info:host:"127.0.0.1"port:3306username:"root"password:"qwer"database:"oauth_db"type:0# database type (0:mysql , 1:sqlite , 2:mssql)self_type_define:# Custom data type mappingdatetime:time.Timedate:time.Timeout_file_name:""# Custom build file nameweb_tag_type:0# json tag 0: Small Camel-Case 1: _
./gormt --helpor./gormt -h-------------------------------------------------------base on gorm tools for mysql database to golang structUsage: 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 是否禁用表名复数 -b, --table_names string 表名称 -l, --url string url标签(json,url) -u, --user string 用户名.
./gormt -H=127.0.0.1 -d=oauth_db -p=qwer -u=root --port=3306 -F=true
- Database tables, column field annotation support
- json tag json tag output
- gorm.ModelSupport export gorm.model>>>
- PRIMARY_KEYSpecifies column as primary key
- UNIQUESpecifies column as unique
- NOT NULLSpecifies column as NOT NULL
- INDEXCreate index with or without name, same name creates composite indexes
- UNIQUE_INDEXLike INDEX, create unique index
- Support foreign key related propertiesSupport export gorm.model>>>
- Support function export (foreign key, association, index , unique and more)Support export function >>>
- model.Condition{} sql link
You can enrich data types indef
- sql:
CREATE TABLE `user_account_tbl` ( `id` int(11) NOT NULL AUTO_INCREMENT, `account` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `account_type` int(11) NOT NULL DEFAULT '0' COMMENT '帐号类型:0手机号,1邮件', `app_key` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT 'authbucket_oauth2_client表的id', `user_info_tbl_id` int(11) NOT NULL, `reg_time` datetime DEFAULT NULL, `reg_ip` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `bundle_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `describ` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `account` (`account`) USING BTREE, KEY `user_info_id` (`user_info_tbl_id`) USING BTREE, CONSTRAINT `user_account_tbl_ibfk_1` FOREIGN KEY (`user_info_tbl_id`) REFERENCES `user_info_tbl` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='用户账号'
// UserAccountTbl 用户账号type UserAccountTbl struct {ID int `gorm:"primary_key"`Account string `gorm:"unique"`Password stringAccountType int // 帐号类型:0手机号,1邮件AppKey string // authbucket_oauth2_client表的idUserInfoTblID int `gorm:"index"`UserInfoTbl UserInfoTbl `gorm:"association_foreignkey:user_info_tbl_id;foreignkey:id"` // 用户信息RegTime time.TimeRegIP stringBundleID stringDescrib string}
// FetchByPrimaryKey primary or index 获取唯一内容func (obj *_UserAccountTblMgr) FetchByPrimaryKey(ID int) (result UserAccountTbl, err error) {err = obj.DB.Table(obj.GetTableName()).Where("id = ?", ID).Find(&result).Errorif err == nil && obj.isRelated {{var info UserInfoTbl // 用户信息err = obj.DB.Table("user_info_tbl").Where("id = ?", result.UserInfoTblID).Find(&info).Errorif err != nil {return}result.UserInfoTbl = info}}return}
make windowsmake linuxmake mac
or
go generate
- Switch encoding mode
CHCP 65001
- Add a comment to the column starting with
[@gorm default:'test']
- example
[@gorm default:'test';->;<-:create]this is my notes
Indicates that the default value is 'test',can read/creat/write - Use of foreign key notes
[@fk tableName.columnName]this is my notes
Represents the 'columnName' column associated with the 'tableName'
About
database to golang struct
Topics
Resources
License
Stars
Watchers
Forks
Packages0
No packages published