GoFrame框架使用避坑指南和实践干货

 更新时间:2022年06月10日 10:53:45   作者:王中阳Go  
这篇文章主要为大家介绍了GoFrame框架使用避坑指南和实践干货,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

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框架避坑干货的资料请关注脚本之家其它相关文章!

相关文章

  • Go语言程序查看和诊断工具详解

    Go语言程序查看和诊断工具详解

    这篇文章主要为大家详细介绍了Go语言程序查看和诊断工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • 一文带你了解Go语言如何解析JSON

    一文带你了解Go语言如何解析JSON

    本文将说明如何利用 Go 语言将 JSON 解析为结构体和数组,如果解析 JSON 的嵌入对象,如何将 JSON 的自定义属性名称映射到结构体,如何解析非结构化的 JSON 字符串
    2023-01-01
  • Go语言中的方法定义用法分析

    Go语言中的方法定义用法分析

    这篇文章主要介绍了Go语言中的方法定义用法,实例分析了方法的定义及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • golang读取各种配置文件(ini、json、yaml)

    golang读取各种配置文件(ini、json、yaml)

    日常项目中,读取各种配置文件是避免不了的,本文主要介绍了golang读取各种配置文件(ini、json、yaml),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • golang gin框架获取参数的操作

    golang gin框架获取参数的操作

    这篇文章主要介绍了golang gin框架获取参数的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go语言之init函数

    Go语言之init函数

    Go语言有一个特殊的函数init,先于main函数执行,实现包级别的一些初始化操作。这篇文章介绍了Go中的Init函数,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 简单讲解Go程序中使用MySQL的方法

    简单讲解Go程序中使用MySQL的方法

    这篇文章主要介绍了Go程序中使用MySQL的方法,需要使用第三方包来进行连接,需要的朋友可以参考下
    2015-10-10
  • 基于Go Int转string几种方式性能测试

    基于Go Int转string几种方式性能测试

    这篇文章主要介绍了Go Int转string几种方式测试,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 如何控制Go编码JSON数据时的行为(问题及解决方案)

    如何控制Go编码JSON数据时的行为(问题及解决方案)

    今天来聊一下我在Go中对数据进行 JSON 编码时遇到次数最多的三个问题以及解决方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-02-02
  • Go语言中重构的技巧分享

    Go语言中重构的技巧分享

    这篇文章主要来和大家分享一下Go语言中重构的技巧,即如何尽量避免使用 else、break 和 continue,从而让代码更透明、更易读,感兴趣的小伙伴可以学习一下
    2023-10-10

最新评论