網站首頁 編程語言 正文
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 }
原文鏈接:https://juejin.cn/post/7081959981456556068
相關推薦
- 2022-09-08 Python如何將list中的string轉換為int_python
- 2022-07-23 .Net創建型設計模式之簡單工廠模式(Simple?Factory)_基礎應用
- 2022-10-07 詳解Python?OpenCV圖像分割算法的實現_python
- 2022-05-11 k8s創建一個簡單的Pod
- 2022-04-08 深入理解Golang的反射reflect示例_Golang
- 2022-07-26 Docker部署Golang+Gin和Python+Tornado后端
- 2022-01-08 解決npm install報錯問題--npm install xxx npm ERR! code E
- 2022-06-01 Kubernetes集群的組成介紹_云和虛擬化
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支