为hade增加model自动生成功能

大家好,我是轩脉刃。

本文记录了使用gen项目实现了一个model自动生成命令的思路,其最终展示效果:https://github.com/gohade/hade/blob/main/docs/guide/model.md

我们写业务的时候和db接触是少不了的,那么要生成model也是少不了的,如何自动生成model,想着要给hade框架增加个这样的命令。

看了下网上的几个开源项目,最终聚焦在两个项目中:

https://github.com/go-gorm/gen

https://github.com/xxjwxc/gormt

gormt的gui是非常强大的,看文档都支持终端gui和windows的gui。但是gormt是一个工具,无法在另外一个项目中引入。

gen项目是gorm官方推出的,有jinzhu作者的参与。所以我尝试选择gen项目。(对的,原因就是这么肤浅...)

gen

gen其实不只是工具,它更像一个全新的orm封装。gen项目生成出来的文件有其实有两个部分,一个是model,就是db的表和对应的model,以xxx.gen.go 命名。而另一个部分是每个model对应一套gen函数,这套gen函数基本上是对orm的二次封装了。

6f7aba28d192df56883ec32d2783f9ae.png
image-20220211091540150

当然这套函数是基于gorm来封装的,不过你可以完全脱离gorm来使用这套函数。

生成的方法示例如下:

g := gen.NewGenerator(gen.Config{
   OutPath:      "/Users/yejianfeng/Documents/workspace/gohade/hade/app/dal",
   ModelPkgPath: "/Users/yejianfeng/Documents/workspace/gohade/hade/app/dal/model",
   WithUnitTest: true,

   FieldNullable:     false,
   FieldCoverable:    true,
   FieldWithIndexTag: false,
   FieldWithTypeTag:  false,

   Mode: gen.WithDefaultQuery,
  })
  gormService := container.MustMake(contract.ORMKey).(contract.ORMService)
  db, err := gormService.GetDB(orm.WithConfigPath("database.default"))
  if err != nil {
   return err
  }

  g.UseDB(db)
  g.WithDataTypeMap(dataMap)
  //g.WithJSONTagNameStrategy(func(c string) string { return "-" })

  //g.ApplyBasic(model.Customer{})
  //g.ApplyBasic(g.GenerateAllTab
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值