最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

GoFrame框架使用避坑指南和實(shí)踐干貨

 更新時(shí)間:2022年06月10日 10:53:45   作者:王中陽(yáng)Go  
這篇文章主要為大家介紹了GoFrame框架使用避坑指南和實(shí)踐干貨,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

gf gen dao

生成dao層的腳手架工具很好用,我遇到的坑是這樣的:

生成的dao文件和同事們的不一致,生成文件成功,但是對(duì)應(yīng)的Columns是空的,雖然有這個(gè)方法,但是方法內(nèi)沒(méi)有值。我的版本比同事們的略高,我一直以為是這個(gè)原因,各種降級(jí)和同事保持一致的版本后還是不行。

最終發(fā)現(xiàn):是配置文件中連接的數(shù)據(jù)庫(kù)不對(duì)。

因?yàn)闆](méi)有連接到數(shù)據(jù)庫(kù),所以取不到列值;但是因?yàn)榕渲梦募屑s定了表名,文件正常生成了。

好坑。

設(shè)置參數(shù)可不傳

使用 ...interface{}

func GetXxx(xxx ...interface{}) { }

model作為結(jié)構(gòu)體類(lèi)型

當(dāng)我們的業(yè)務(wù)比較復(fù)雜,需要更新多個(gè)關(guān)聯(lián)表時(shí),可以把需要修改的表統(tǒng)一定義到一個(gè)結(jié)構(gòu)體中,而不是想到一個(gè)model處理一個(gè)model。

這種思想比較好,把關(guān)聯(lián)的model統(tǒng)一封裝到一個(gè)結(jié)構(gòu)體中,很清晰,也能避免有遺漏。

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關(guān)聯(lián)取值而不是join

能用with的一定用with關(guān)聯(lián)取值,而不是用join。

發(fā)現(xiàn)自己整理的栗子沒(méi)有官網(wǎng)的好,大家還是看官網(wǎng)吧: goframe.org/pages/viewp…

不使用結(jié)構(gòu)體批量添加數(shù)據(jù)

goframe非常靈活,插入的數(shù)據(jù)可以是結(jié)構(gòu)體也可以是map,也可以是map類(lèi)型的切片,來(lái)實(shí)現(xiàn)批量添加。

主程序如下:

//主圖輪播
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"`

插入數(shù)據(jù)

batch指定了批量插入時(shí)一次插入的條數(shù)

func (m *goodsMessageService) AddGoodsCover(ctx context.Context, tx *gdb.TX, goodsImgs g.List) (err error) {
   if len(goodsImgs) == 0 {
      return errors.New("暫無(wú)數(shù)據(jù)")
   }
   _, err = dao.GoodsCover.TX(tx).Ctx(ctx).Batch(len(goodsImgs)).Insert(goodsImgs)
   checkErr(err, "UpdateGoodsCover")
   return
}

以上就是GoFrame框架使用避坑指南和實(shí)踐干貨的詳細(xì)內(nèi)容,更多關(guān)于GoFrame框架避坑干貨的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • golang生成RSA公鑰和密鑰的實(shí)現(xiàn)方法

    golang生成RSA公鑰和密鑰的實(shí)現(xiàn)方法

    本文主要介紹了golang生成RSA公鑰和密鑰的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Go語(yǔ)言實(shí)現(xiàn)可選參數(shù)的方法小結(jié)

    Go語(yǔ)言實(shí)現(xiàn)可選參數(shù)的方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言實(shí)現(xiàn)可選參數(shù)的一些常見(jiàn)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Golang中空的切片轉(zhuǎn)化成 JSON 后變?yōu)?nbsp;null 問(wèn)題的解決方案

    Golang中空的切片轉(zhuǎn)化成 JSON 后變?yōu)?nbsp;null 問(wèn)題的解決方案

    在 Golang 中,經(jīng)常需要將其他類(lèi)型(例如 slice、map、struct 等類(lèi)型)的數(shù)據(jù)轉(zhuǎn)化為 JSON 格式,有時(shí)候轉(zhuǎn)化的結(jié)果并不是預(yù)期中的,例如將一個(gè)空的切片轉(zhuǎn)化為 JSON 時(shí),會(huì)變成"null",所以本文將給大家介紹一下解決方法,需要的朋友可以參考下
    2023-09-09
  • golang map的基本操作及定義方式

    golang map的基本操作及定義方式

    這篇文章主要介紹了golang-map的基本操作,由于map是引用類(lèi)型,所以在操作的時(shí)候,必須先初始化,本文通過(guò)多種方式給大家講解map的定義方式,需要的朋友可以參考下
    2022-08-08
  • 一文掌握Go語(yǔ)言并發(fā)編程必備的Mutex互斥鎖

    一文掌握Go語(yǔ)言并發(fā)編程必備的Mutex互斥鎖

    Go 語(yǔ)言提供了 sync 包,其中包括 Mutex 互斥鎖、RWMutex 讀寫(xiě)鎖等同步機(jī)制,本篇博客將著重介紹 Mutex 互斥鎖的基本原理,需要的可以參考一下
    2023-04-04
  • 一文帶你吃透Golang中的類(lèi)型轉(zhuǎn)換

    一文帶你吃透Golang中的類(lèi)型轉(zhuǎn)換

    Golang是一種強(qiáng)類(lèi)型語(yǔ)言,所以Golang的類(lèi)型轉(zhuǎn)換和C/C++ java等語(yǔ)言的類(lèi)型轉(zhuǎn)換還有點(diǎn)區(qū)別,本文講通過(guò)一些簡(jiǎn)單的示例帶大家深入了解一下Golang中的類(lèi)型轉(zhuǎn)換,需要的可以參考下
    2023-05-05
  • Go?語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)Vigenere加密算法

    Go?語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)Vigenere加密算法

    這篇文章主要介紹了Go語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)Vigenere加密算法,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-09-09
  • Go語(yǔ)言 go程釋放操作(退出/銷(xiāo)毀)

    Go語(yǔ)言 go程釋放操作(退出/銷(xiāo)毀)

    這篇文章主要介紹了Go語(yǔ)言 go程釋放操作(退出/銷(xiāo)毀),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Golang實(shí)現(xiàn)gRPC的Proxy的原理解析

    Golang實(shí)現(xiàn)gRPC的Proxy的原理解析

    gRPC是Google開(kāi)始的一個(gè)RPC服務(wù)框架, 是英文全名為Google Remote Procedure Call的簡(jiǎn)稱(chēng),廣泛的應(yīng)用在有RPC場(chǎng)景的業(yè)務(wù)系統(tǒng)中,這篇文章主要介紹了Golang實(shí)現(xiàn)gRPC的Proxy的原理,需要的朋友可以參考下
    2021-09-09
  • Golang切片刪除指定元素的三種方法對(duì)比

    Golang切片刪除指定元素的三種方法對(duì)比

    Go語(yǔ)言并沒(méi)有提供用于刪除元素的語(yǔ)法或接口,而是通過(guò)利用切片本身的特性來(lái)刪除元素—追加元素,這篇文章主要給大家介紹了關(guān)于Golang切片刪除指定元素的三種方法,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

宽甸| 涡阳县| 辉县市| 黄龙县| 扶沟县| 唐海县| 开平市| 本溪| 富顺县| 平和县| 葵青区| 邛崃市| 临西县| 凤台县| 宁远县| 娱乐| 赣州市| 鸡泽县| 南漳县| 东乌| 油尖旺区| 正阳县| 大名县| 区。| 白朗县| 禹州市| 姜堰市| 科尔| 镇远县| 龙山县| 洪洞县| 喀什市| 保靖县| 中超| 广安市| 岳西县| 徐汇区| 武清区| 苍梧县| 四子王旗| 乌什县|