gfgendao通过实战总结的非常好用。我遇到的坑是这样的:生成的dao文件和同事的不一致。生成文件成功,但是对应的Columns方法为空。虽然有这个方法,但是方法里面没有值。我的版本略高于我的同事。我一直以为是因为这个。经过各种降级,我的同事保持相同的版本,它仍然没有用。最后发现:配置文件中连接的数据库不对。因为没有连接数据库,无法获取列值;但是因为配置文件中约定了表名,所以正常生成文件。如果您遇到过类似问题,请检查配置文件。设置参数可以传也可以不传。这个场景与是否使用GoFrame框架无关。如果你还需要设置这个参数是否可以通过,你也可以这样做:使用...interface{}例如:funcGetXxx(xxx...interface{}){}modelasastructuretype当我们的业务比较复杂,需要更新多个关联表时,我们可以将需要修改的表定义成一个结构体,而不是想着一个模型去处理一个模型。这种想法比较好。将关联的模型封装成一个结构非常清晰,可以避免遗漏。typeGoodsRelevantItemstruct{Shop*model.ShopsBrand*model.GoodsBrandDesc*model.GoodsDescriptionCover[]*model.GoodsCoverAttributes[]*model.GoodsAttributesGoods*model.GoodsDisCategory[]*model.DisCategory}协会,官方说:GoFrame的ORM没有采用其他ORM常见的BelongsTo、HasOne、HasMany、ManyToMany等模型关联设计。这样的关联关系维护比较繁琐,比如外键约束、附加标签注释等,对开发者有一定的精神负担。因此,gf框架并不倾向于在模型结构中注入过多复杂的标签内容、关联属性或方法,一如既往地尽量简化设计。目标是使模型关联查询尽可能简单易懂和方便使用。我也花时间整理了我在项目中的例子,但是发现我整理的例子官网看得不太明白,所以最后把我的例子删掉了。“模型关联”部分比较硬核实用,但确实有理解成本。我们看一下官方的例子:《模型关联-动态关联-ScanList》:https://goframe.org/pages/viewpage.action?pageId=1114326《模型关联-静态关联-WithFeatures》:https:///goframe.org/pages/viewpage.action?pageId=7297190官方的例子我也会放在原文里,方便大家参考。添加数据goframe非常灵活。插入的数据可以是结构体也可以是map,也可以是map类型的slice,实现批量添加。举个栗子:主程序如下://主图轮播goodsImgs:=[]map[string]interface{}{}//图片集合fork,img:=rangegomeGoods.MainImgs{goodsImg:=map[string]interface{}{}//imagegoodsImg["cover"]="http:"+imggoodsImg["goods_id"]=gconv.Int(goodsDetail["goods_id"])goodsImg["sort"]=kgoodsImgs=append(goodsImgs,goodsImg)}//添加主图err=m.AddGoodsCover(ctx,tx,goodsImgs)iferr!=nil{err=errors.New("添加商品主图失败")returnerr,0}ofMainImgsDefinition:MainImgs[]string`json:"mainImgs"`批量插入数据batch指定批量插入时一次插入的条数func(m*goodsMessageService)AddGoodsCover(ctxcontext.Context,tx*gdb.TX,goodsImgsg.List)(errerror){iflen(goodsImgs)==0{returnerrors.New("Nodata")}_,err=dao.GoodsCover.TX(tx).Ctx(ctx).Batch(len(goodsImgs)).Insert(goodsImgs)checkErr(err,"UpdateGoodsCover")return}配置插件自动生成erateservice如果你使用的是goframeV2.1或以上版本,强烈建议配置goland插件,而不是每次修改逻辑脚本都要手动敲打。配置方法如下:配置文件链接:https://goframe.org/pages/viewpage.action?pageId=49770772&preview=/49770772/49770777/watchers.xml提示:当自动生成的文件报错时,或者某些“magic”出现问题”,建议删除生成的文件。只需在相应逻辑代码的空白处回车或空格,即可生成新的服务文件。注意:切勿手动修改自动生成的代码。(因为我修改的代码后期肯定会被覆盖)纸上的结论总是浅薄的,我知道这件事一定要做。编程是一门手艺,要多做多练习才能有长足的进步。这篇文章是转载自微信公众号《程序员升级打怪之旅》,作者“王中阳围棋”,可关注下方二维码,转载请联系“程序员升级打怪之旅”公众号.
