gowebcode代码工厂支持视图生成代码/基础代码是泛型

开源:

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
          }
     ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leijmdas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值