大家好,我是轩脉刃。
本文记录了使用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的二次封装了。
当然这套函数是基于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
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/39128.html