您现在的位置是:网站首页> 编程资料编程资料
GoFrame框架使用避坑指南和实践干货_Golang_
2023-05-26
580人已围观
简介 GoFrame框架使用避坑指南和实践干货_Golang_
gf gen dao
生成dao层的脚手架工具很好用,我遇到的坑是这样的:
生成的dao文件和同事们的不一致,生成文件成功,但是对应的Columns是空的,虽然有这个方法,但是方法内没有值。我的版本比同事们的略高,我一直以为是这个原因,各种降级和同事保持一致的版本后还是不行。
最终发现:是配置文件中连接的数据库不对。
因为没有连接到数据库,所以取不到列值;但是因为配置文件中约定了表名,文件正常生成了。
好坑。
设置参数可不传
使用 ...interface{}
func GetXxx(xxx ...interface{}) { } model作为结构体类型
当我们的业务比较复杂,需要更新多个关联表时,可以把需要修改的表统一定义到一个结构体中,而不是想到一个model处理一个model。
这种思想比较好,把关联的model统一封装到一个结构体中,很清晰,也能避免有遗漏。
type GoodsRelevantItem struct { Shop *model.Shops Brand *model.GoodsBrand Desc *model.GoodsDescription Cover []*model.GoodsCover Attributes []*model.GoodsAttributes Goods *model.Goods DisCategory []*model.DisCategory } 使用with关联取值而不是join
能用with的一定用with关联取值,而不是用join。
发现自己整理的栗子没有官网的好,大家还是看官网吧: goframe.org/pages/viewp…
不使用结构体批量添加数据
goframe非常灵活,插入的数据可以是结构体也可以是map,也可以是map类型的切片,来实现批量添加。
主程序如下:
//主图轮播 goodsImgs := []map[string]interface{}{} //图片集 for k, img := range gomeGoods.MainImgs { goodsImg := map[string]interface{}{} //图片 goodsImg["cover"] = "http:" + img goodsImg["goods_id"] = gconv.Int(goodsDetail["goods_id"]) goodsImg["sort"] = k goodsImgs = append(goodsImgs, goodsImg) } //添加主图 err = m.AddGoodsCover(ctx, tx, goodsImgs) if err != nil { err = errors.New("添加商品主图失败") return err, 0 } gomeGoods.MainImgs的定义:
MainImgs []string `json:"mainImgs"`
插入数据
batch指定了批量插入时一次插入的条数
func (m *goodsMessageService) AddGoodsCover(ctx context.Context, tx *gdb.TX, goodsImgs g.List) (err error) { if len(goodsImgs) == 0 { return errors.New("暂无数据") } _, err = dao.GoodsCover.TX(tx).Ctx(ctx).Batch(len(goodsImgs)).Insert(goodsImgs) checkErr(err, "UpdateGoodsCover") return } 以上就是GoFrame框架使用避坑指南和实践干货的详细内容,更多关于GoFrame框架避坑干货的资料请关注其它相关文章!
您可能感兴趣的文章:
相关内容
- GoFrame框架ORM原生方法对象操作开箱体验_Golang_
- GoFrame ORM原生方法操作示例_Golang_
- GoFrame框架Scan类型转换实例_Golang_
- Go GORM版本2.0新特性介绍_Golang_
- 源码解析gtoken替换jwt实现sso登录_Golang_
- GoFrame glist 基础使用和自定义遍历_Golang_
- goFrame的队列gqueue对比channel使用详解_Golang_
- GoFrame通用类型变量gvar与interface基本使用对比_Golang_
- GoFrame gtree树形结构的使用技巧示例_Golang_
- Go语言kafka生产消费消息实例搬砖_Golang_
