本文主要介绍GoFrame框架的避坑指南和干货实践。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
目录
gf gen dao可以设置参数而不传递model作为结构类型,使用with association代替join批量添加数据而不使用structure。主要节目如下:gomeGoods。维护定义:插入数据
gf gen dao
生成dao层的脚手架工具非常好用。我遇到的坑是这样的:
生成的dao文件与同事的不一致。生成的文件是成功的,但是相应的列是空的。虽然有这个方法,但是方法没有价值。我的版本略高于同事。我一直以为是这个原因,但是各种版本降级和同事一致后还是不行。
最后发现配置文件中连接的数据库是错误的。
无法获取列值,因为它未连接到数据库;但是,因为表名是在配置文件中规定的,所以文件是正常生成的。
好坑。
设置参数可不传
使用.界面{}
func GetXxx(xxx.接口{}) { }
model作为结构体类型
当我们的业务比较复杂,需要更新多个相关的表时,我们可以把需要修改的表定义成一个结构,而不是想一个模型处理一个模型。
这个想法比较好。把相关模型封装成一个结构就很清楚了,也可以避免任何遗漏。
类型GoodsRelevantItem struct {
商店*模型。商店
品牌*型号。商品品牌
desc *模型。商品描述
封面[]*型号。商品封面
属性[]*模型。商品属性
商品*型号。商品
DisCategory[]*型号。分类
}
使用with关联取值而不是join
可以与一起使用的必须与with with关联,而不是与join关联。
发现自己整理的栗子没有官网的好,所以大家还是看官方网吧:goframe.org/pages/viewp…
不使用结构体批量添加数据
Goframe非常灵活,插入的数据可以是结构也可以是图,也可以是图类型的切片,从而实现批量添加。
主程序如下://主图像转盘
Goodsimgs:=[] map [string]界面{ } { }//相册
对于k,img :=range gomeGoods。维护信息{
good img:=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)
如果err!=零{
Err=错误。新建(未能添加商品主地图)
返回错误,0
}
gomeGoods.MainImgs的定义:main imgs[]string ` JSON: main imgs
插入数据批次指定在批次插入过程中一次插入的件数。
func(m * goodsMessageService)AddGoodsCover(CTX上下文。环境,tx *gdb。TX,goodsImgs g.List) (err error) {
如果len(goodsImgs)==0 {
返回错误。新建(“尚无数据”)
}
_,err=dao。GoodsCover.TX(tx)。Ctx(ctx)。Batch(len(goodsImgs))。插入(商品)
检查器(Err, UpdateGoodsCover )
返回
}
以上是GoFrame框架使用避坑和练习干货指南的详细内容。更多关于GoFrame框架的避坑干货,请关注我们的其他相关文章!