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

GoFrame框架使用避坑指南和實踐干貨

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

gf gen dao

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

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

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

因為沒有連接到數(shù)據(jù)庫,所以取不到列值;但是因為配置文件中約定了表名,文件正常生成了。

好坑。

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

使用 ...interface{}

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

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

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

這種思想比較好,把關(guān)聯(lián)的model統(tǒng)一封裝到一個結(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)自己整理的栗子沒有官網(wǎng)的好,大家還是看官網(wǎng)吧: goframe.org/pages/viewp…

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

goframe非常靈活,插入的數(shù)據(jù)可以是結(jié)構(gòu)體也可以是map,也可以是map類型的切片,來實現(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ù)

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    Go?語言簡單實現(xiàn)Vigenere加密算法

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

    Go語言 go程釋放操作(退出/銷毀)

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

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

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

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

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

最新評論

淮滨县| 汉源县| 兴安盟| 正阳县| 湟中县| 湖口县| 大荔县| 永平县| 江源县| 乌拉特前旗| 佛山市| 荥阳市| 岳阳市| 全椒县| 湘西| 金沙县| 大邑县| 泌阳县| 蚌埠市| 鄯善县| 阜城县| 吴桥县| 长汀县| 陈巴尔虎旗| 吴堡县| 山东省| 遵义县| 会同县| 墨脱县| 东辽县| 共和县| 甘孜县| 循化| 紫金县| 老河口市| 深水埗区| 白城市| 城市| 五峰| 乌恰县| 东兰县|