通過實戰總結的 GoFrame 使用小技巧
gf gen dao
生成dao層的腳手架工具很好用,我遇到的坑是這樣的:
生成的dao文件和同事們的不一致,生成文件成功,但是對應的Columns方法是空的。雖然有這個方法,但是方法內沒有值。我的版本比同事們的略高,我一直以為是這個原因,各種降級和同事保持一致的版本后還是不行。
最終發現:是配置文件中連接的數據庫不對。
因為沒有連接到數據庫,所以取不到列值;但是因為配置文件中約定了表名,文件正常生成了。
如果你也遇到了類似問題,去排查一下配置文件吧。
設置參數可傳可不傳
這個場景和是否使用GoFrame框架沒關系,如果你也需要設置這個參數可傳可不傳,也能這么搞:
使用 ...interface{}
比如:
model作為結構體類型
當我們的業務比較復雜,需要更新多個關聯表時,可以把需要修改的表統一定義到一個結構體中,而不是想到一個model處理一個model。
這種思想比較好,把關聯的model統一封裝到一個結構體中,很清晰,也能避免有遺漏。
模型關聯
關于模型關聯,官方是這么說的:
GoFrame的ORM沒有采用其他ORM常見的BelongsTo, HasOne, HasMany, ManyToMany這樣的模型關聯設計,這樣的關聯關系維護較繁瑣,例如外鍵約束、額外的標簽備注等,對開發者有一定的心智負擔。因此gf框架不傾向于通過向模型結構體中注入過多復雜的標簽內容、關聯屬性或方法,并一如既往地嘗試著簡化設計,目標是使得模型關聯查詢盡可能得易于理解、使用便捷。
我也花時間整理了自己在項目中的示例,但是發現自己整理的例子沒有官網的好理解,所以最終我還是把自己的例子刪掉了。
「模型關聯」這部分比較硬核且實用,但是也確實有理解成本。
大家還是看官方示例吧:
「模型關聯-動態關聯-ScanList」:https://goframe.org/pages/viewpage.action?pageId=1114326
「模型關聯-靜態關聯-With特性」:https://goframe.org/pages/viewpage.action?pageId=7297190
我也會把官方示例放到閱讀原文中,方便大家去查看。
添加數據
goframe非常靈活,插入的數據可以是結構體也可以是map,也可以是map類型的切片,來實現批量添加。
舉個栗子:
主程序如下:
MainImgs的定義:
批量插入數據
batch指定了批量插入時一次插入的條數
配置插件自動生成service
如果你在用goframe V2.1 以上版本,生成service強烈建議配置goland插件,而不是每次修改logic后手動敲腳本。
配置方式如下:

配置文件鏈接:https://goframe.org/pages/viewpage.action?pageId=49770772&preview=/49770772/49770777/watchers.xml
小技巧:當自動生成的文件報錯,或者出現一些“神奇的問題”,建議把生成的文件刪除掉。在對應的logic代碼空白處隨便敲個回車或者空格就能生成新的service文件。
注意:千萬不要手動修改自動生成的代碼。(因為自己修改的代碼后期肯定會被覆蓋掉)
總結
紙上得來終覺淺,覺知此事要躬行。
編程是一門手藝活,一定多動手,重實踐,才能獲得長足的進步。
本文轉載自微信公眾號「 程序員升級打怪之旅」,作者「王中陽Go」,可以通過以下二維碼關注。

轉載本文請聯系「 程序員升級打怪之旅」公眾號。




























