开源:
https://gitee.com/ichub/gowebcode.git
执行
go get -u gitee.com/ichub/gowebcode go get install gitee.com/ichub/gowebcode/cmd/gowebcode
goinstall.bat
代码模板
/*
{{.TableComment}}
*/
type {{.Model}} struct {
basedto.BaseEntity `gorm:"-"`
{{.ModelDefine}}
}
func New{{.Model}}() *{{.Model}} {
var m = &{{.Model}}{}
m.InitProxy(m)
return m
}
/*
gorm默认生成的表名是结构名+'s',所以必须以结构方法指定!
*/
func (entity *{{.Model}}) TableName() string {
return "{{.TableName}}"
}
func (entity {{.Model}}) PkeyName() string {
return "{{.pkeyField}}"
}
func (entity {{.Model}}) PkeyValue() {{.pkeyType}} {
return entity.{{.pkey}}
}
gowebcode mysql table v_table
生成的代码模型
type VAccount struct { basedto.BaseEntity `gorm:"-"` /* */ Id int64 `gorm:"column:id;type:INT8;PRIMARY_KEY" json:"id"` /* */ CreatedAt time.Time `gorm:"column:created_at;type:TIMESTAMPTZ" json:"created_at"` /* */ UpdatedAt time.Time `gorm:"column:updated_at;type:TIMESTAMPTZ" json:"updated_at"` /* */ DeletedAt *time.Time `gorm:"column:deleted_at;type:TIMESTAMPTZ" json:"deleted_at"` /* */ CreatedBy int64 `gorm:"column:created_by;type:INT8" json:"created_by"` /* */ UpdatedBy int64 `gorm:"column:updated_by;type:INT8" json:"updated_by"` /* */ DeletedBy int64 `gorm:"column:deleted_by;type:INT8" json:"deleted_by"` /* */ Slug string `gorm:"column:slug;type:UUID" json:"slug"` /* */ ContactShopId int64 `gorm:"column:contact_shop_id;type:INT8" json:"contact_shop_id"` ... } func NewVAccount() *VAccount { var m = &VAccount{} m.InitProxy(m) return m } /* gorm默认生成的表名是结构名+'s',所以必须以结构方法指定! */ func (entity VAccount) TableName() string { return "v_account" } func (entity VAccount) PkeyName() string { return "id" } func (entity VAccount) PkeyValue() int64 { return entity.Id } /* 迁移 */ func (entity *VAccount) AutoMigrate(db *gorm.DB) error { err := db.AutoMigrate(entity).Error entity.execComment(db) return err }
DAO
var InstVAccountDao = NewVAccountDao() type VAccountDao struct { basedto.BaseEntitySingle `gorm:"-"` *generaldao.BaseDao[int64, model.VAccount] } func NewVAccountDao() *VAccountDao { var d = &VAccountDao{ BaseDao: generaldao.NewBaseDao[int64, model.VAccount](), } d.InitProxy(d) return d }
执行用例
func (this *TestVTableDaoSuite) Test006_Query() { logrus.Info("start Query ...") pageRequest := page.NewPageRequest(3, 1) pageResult := this.Dao.Query(pageRequest) logrus.Info(pageResult) this.Equal(200, pageResult.Code) }
执行结果
INFO[2024-08-818 12:56:07]D:/go-ichub/go/gowebcode/code/mysql/test/dao/v_table_dao_test.go:70 gitee.com/ichub/gowebcode/code/mysql/test/dao.(*TestVTableDaoSuite).Test006_Query() {
"code": 200,
"msg": "成功",
"page_size": 3,
"current": 1,
"total": 1912,
"data": [
{
"metadata_db": "gofly",
"metadata_name": "about",
"metadata_memo": "",
"metadata_alias": "",
"metadata_parentid": 0,
"metadata_type": 1,
"metadata_cached": 0,
"metadata_order": 0
},
{
"metadata_db": "ApolloConfigDB",
"metadata_name": "AccessKey",
"metadata_memo": "访问密钥",
"metadata_alias": "访问密钥",
"metadata_parentid": 0,
"metadata_type": 1,
"metadata_cached": 0,
"metadata_order": 0
},
{
"metadata_db": "performance_schema",
"metadata_name": "accounts",
"metadata_memo": "",
"metadata_alias": "",
"metadata_parentid": 0,
"metadata_type": 1,
"metadata_cached": 0,
"metadata_order": 0
}
]
}