68747470733a2f2f7472617669732d63692e6f72672f78786a7778632f676f726d742e7376673f6272616e63683d6d617374657268747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f78786a7778632f676f726d7468747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f78786a7778632f676f726d743f7374617475732e73766768747470733a2f2f617765736f6d652e72652f6d656e74696f6e65642d62616467652e737667

mysql database to goang struct conversion tools base on gorm,You can automatically generate golang sturct from MySQL database. big Camel-Case Name Rule, JSON tag.

gui support

ui_en.gif

./gormt -g=true

cmd support

out.gif

./gormt -g=false

install

go get -u github.com/xxjwxc/gormt

1. Configure default configuration items through the current directory config.yml file

out_dir : "." # out dir

url_tag : json # web url tag(json,db(https://github.com/google/go-querystring))

language : # language(English,中 文)

db_tag : gorm # DB tag(gorm,db)

singular_table : true # Table name plural (big Camel-Case):gorm.SingularTable

simple : false #simple output

is_out_sql : false # Whether to output sql

is_out_func : true # Whether to output function

is_url_tag : true # Whether to mark web or not

is_foreign_key : true # Whether to mark foreign key or not

is_gui : false # Whether to operate on gui

is_table_name : false # Whether to out GetTableName function

is_null_to_point : false # database is 'DEFAULT NULL' then set element type as point

mysql_info :

host : "127.0.0.1"

port : 3306

username : "root"

password : "qwer"

database : "oauth_db"

2. get help

./gormt --help

or

./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 用户名.

3. Can be updated configuration items using command line tools

./gormt -H=127.0.0.1 -d=oauth_db -p=qwer -u=root --port=3306 -F=true

4. Support for gorm attributes

Database tables, column field annotation support

singular_table, Table name plural (big Camel-Case)

json tag json tag output

PRIMARY_KEY Specifies column as primary key

UNIQUE Specifies column as unique

NOT NULL Specifies column as NOT NULL

INDEX Create index with or without name, same name creates composite indexes

UNIQUE_INDEX Like INDEX, create unique index

Support foreign key related properties Support export gorm.model>>>

Support function export (foreign key, association, index , unique and more)Support export function >>>

You can enrich data types in def

5. Demonstration

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='用户账号'

--->Derived results

// UserAccountTbl 用户账号

type UserAccountTbl struct {

ID int `gorm:"primary_key"`

Account string `gorm:"unique"`

Password string

AccountType int // 帐号类型:0手机号,1邮件

AppKey string // authbucket_oauth2_client表的id

UserInfoTblID int `gorm:"index"`

UserInfoTbl UserInfoTbl `gorm:"association_foreignkey:user_info_tbl_id;foreignkey:id"` // 用户信息

RegTime time.Time

RegIP string

BundleID string

Describ string

}

6. support func export

The exported function is only the auxiliary class function of Gorm, and calls Gorm completely

// 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. build

make windows

make linux

make mac

or

go generate

8. Next step

update,delete support

revew

9. one windows gui tools

1.png

2.jpg

3.jpg

4.jpg

Stargazers over time

68747470733a2f2f7374617263686172742e63632f78786a7778632f676f726d742e737667

Logo

一站式 AI 云服务平台

更多推荐