converter
converter copied to clipboard
database table to golang struct (table to struct) converter with cli and go lib support
a lib for golang , generate mysql table schema to golang struct
mysqlè¡¨ç»æèªå¨çægolang struct
githubå°å
https://github.com/gohouse/converter
å®è£
- ç´æ¥ä¸è½½å¯æ§è¡æä»¶: ä¸è½½å°å
- golangæºç å
:
go get github.com/gohouse/converter
示ä¾è¡¨ç»æ
CREATE TABLE `prefix_user` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Email` varchar(32) NOT NULL DEFAULT '' COMMENT 'é®ç®±',
`Password` varchar(32) NOT NULL DEFAULT '' COMMENT 'å¯ç ',
`CreatedAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ç¨æ·è¡¨'
å½ä»¤è¡ç¨æ³
-
ä¸è½½å¯¹åºå¹³å°ç坿§è¡æä»¶, ä¸è½½å°å
-
å½ä»¤è¡æ§è¡
# æä»¶å: table2struct-[$platform].[$version].[$suffix] ./table2struct-linux.v0.0.3.bin -file model.go -dsn xxx -table user -
åæ°è¯´æ
-dsn string æ°æ®åºdsné
ç½®
-enableJsonTag bool æ¯å¦æ·»å jsonçtag
-file string ä¿åè·¯å¾
-packageName string å
å
-prefix string 表åç¼
-realNameMethod string ç»æä½å¯¹åºç表å
-table string è¦è¿ç§»ç表
-tagKey string tagçkey
golang代ç ç®åç¨æ³
package main
import (
"fmt"
"github.com/gohouse/converter"
)
func main() {
err := converter.NewTable2Struct().
SavePath("/home/go/project/model/model.go").
Dsn("root:root@tcp(localhost:3306)/test?charset=utf8").
Run()
fmt.Println(err)
}
golang代ç 详ç»ç¨æ³ç¤ºä¾
package main
import (
"fmt"
"github.com/gohouse/converter"
)
func main() {
// åå§å
t2t := converter.NewTable2Struct()
// 个æ§åé
ç½®
t2t.Config(&converter.T2tConfig{
// 妿忮µé¦åæ¯æ¬æ¥å°±æ¯å¤§å, 就䏿·»å tag, é»è®¤falseæ·»å , true䏿·»å
RmTagIfUcFirsted: false,
// tagçåæ®µå忝å¦è½¬æ¢ä¸ºå°å, 妿æ¬èº«æå¤§å忝çè¯, é»è®¤falseä¸è½¬
TagToLower: false,
// åæ®µé¦åæ¯å¤§åçåæ¶, æ¯å¦è¦æå
¶ä»åæ¯è½¬æ¢ä¸ºå°å,é»è®¤falseä¸è½¬æ¢
UcFirstOnly: false,
//// æ¯ä¸ªstructæ¾å
¥åç¬çæä»¶,é»è®¤false,æ¾å
¥åä¸ä¸ªæä»¶(ææªæä¾)
//SeperatFile: false,
})
// å¼å§è¿ç§»è½¬æ¢
err := t2t.
// æå®æä¸ªè¡¨,妿䏿å®,åé»è®¤å
¨é¨è¡¨é½è¿ç§»
Table("user").
// 表åç¼
Prefix("prefix_").
// æ¯å¦æ·»å json tag
EnableJsonTag(true).
// çæstructçå
å(é»è®¤ä¸ºç©ºçè¯, ååå为: package model)
PackageName("model").
// tagåæ®µçkeyå¼,é»è®¤æ¯orm
TagKey("orm").
// æ¯å¦æ·»å ç»æä½æ¹æ³è·å表å
RealNameMethod("TableName").
// çæçç»æä½ä¿åè·¯å¾
SavePath("/Users/fizz/go/src/github.com/gohouse/gupiao/model/model.go").
// æ°æ®åºdsn,è¿éå¯ä»¥ä½¿ç¨ t2t.DB() 代æ¿,åæ°ä¸º *sql.DB 对象
Dsn("root:root@tcp(localhost:3306)/test?charset=utf8").
// æ§è¡
Run()
fmt.Println(err)
}
result
package model
import "time"
type User struct {
Id int `json:"Id" orm:"Id"`
Email string `json:"Email" orm:"Email"` // é®ç®±
Password string `json:"Password" orm:"Password"` // å¯ç
CreatedAt string `json:"CreatedAt" orm:"CreatedAt"`
}
func (*User) TableName() string {
return "user"
}