Model generation tool, which mainly generates mysql table
as golang type, avoids the inconvenience caused by manual
operation, and facilitates project maintenance and expansion.
go version >= 1.21
go install github.com/daheige/tbox/cmd/tbox@latesttbox help
tbox -hUsage of tbox:
-d string
pkg dir path,eg:-d=./model (default "./model")
-dsn string
mysql dsn,eg:-dsn="root:root1234@tcp(127.0.0.1:3306)/test?charset=utf8mb4"
-j whether add json tag eg:-j=true (default:false)
-f whether add TableName func,eg:-f=true (default:false)
-p string
pkg name,eg:-p=model (default:model)
-t string
table,eg:-t="user,order"
-tag string
tag key,eg:-tag=db (default:db)
-u whether uc first only,eg:-u=true (default:false)
-v whether output cmd,eg:-v=true (default:false)
-n whether all field no null eg:-n=true (default:false)
-s set table suffix for gen file,default:tab,eg:user_tab.go (default:tab)
take tbox_demo as an example:
$ cd ~
$ mkdir tbox_demo
$ cd tbox_demo
$ tbox -dsn="root:root1234@tcp(127.0.0.1:3306)/test?charset=utf8mb4"
2021/12/25 19:36:18 generating code success// Package model of db entity
// Code generated by daheige/tbox. DO NOT EDIT!!!
package model
import (
"time"
)
// NewsTable for news
const NewsTable = "news"
// NewsEntity for news table entity struct.
type NewsEntity struct {
ID int64 `json:"id" db:"id"`
CreatedAt *time.Time `json:"created_at" db:"created_at"`
UpdatedAt *time.Time `json:"updated_at" db:"updated_at"`
DeletedAt *time.Time `json:"deleted_at" db:"deleted_at"`
Title *string `json:"title" db:"title"`
Slug *string `json:"slug" db:"slug"`
Content *string `json:"content" db:"content"`
Status *string `json:"status" db:"status"`
}
// TableName for news
func (NewsEntity) TableName() string {
return NewsTable
}for gorm:
// Package model of db entity
// Code generated by daheige/tbox. DO NOT EDIT!!!
package model
// UserTable for user
const UserTable = "user"
// UserEntity for user table entity struct.
type UserEntity struct {
ID int64 `json:"id" gorm:"column:id;primaryKey"`
Username string `json:"username" gorm:"column:username"`
Age int64 `json:"age" gorm:"column:age"`
}
// TableName for user
func (UserEntity) TableName() string {
return UserTable
}for xorm:
// Package model of db entity
// Code generated by daheige/tbox. DO NOT EDIT!!!
package model
// UserTable for user
const UserTable = "user"
// UserEntity for user table entity struct.
type UserEntity struct {
ID int64 `json:"id" xorm:"id pk autoincr"`
Username string `json:"username" xorm:"username"`
Age int64 `json:"age" xorm:"age"`
}
// TableName for user
func (UserEntity) TableName() string {
return UserTable
}tbox -dsn="root:root123456@tcp(127.0.0.1:3306)/test?checkConnLiveness=false&loc=Local&parseTime=true&readTimeout=5s&timeout=10s&writeTimeout=5s&maxAllowedPacket=0&charset=utf8mb4" -t=user -v=true -n=true -f=true -j=true -tag=xormcode style:
// Package model of db entity
// Code generated by daheige/tbox. DO NOT EDIT!!!
package model
// UserTable for user
const UserTable = "user"
// UserEntity for user table entity struct.
type UserEntity struct {
ID int64 `json:"id" xorm:"id pk autoincr"`
User string `json:"user" xorm:"user"`
Name string `json:"name" xorm:"name"`
UserID int64 `json:"user_id" xorm:"user_id"`
}
// TableName for user
func (UserEntity) TableName() string {
return UserTable
}tbox -dsn="root:root123456@tcp(127.0.0.1:3306)/test?checkConnLiveness=false&loc=Local&parseTime=true&readTimeout=5s&timeout=10s&writeTimeout=5s&maxAllowedPacket=0&charset=utf8mb4" -t=user -v=true -n=true -f=true -j=true -tag=gormcode style:
// Package model of db entity
// Code generated by daheige/tbox. DO NOT EDIT!!!
package model
// UserTable for user
const UserTable = "user"
// UserEntity for user table entity struct.
type UserEntity struct {
ID int64 `json:"id" gorm:"column:id;primaryKey"`
User string `json:"user" gorm:"column:user"`
Name string `json:"name" gorm:"column:name"`
UserID int64 `json:"user_id" gorm:"column:user_id"`
}
// TableName for user
func (UserEntity) TableName() string {
return UserTable
}