通過實(shí)戰(zhàn)總結(jié)的 GoFrame 使用小技巧
gf gen dao
生成dao層的腳手架工具很好用,我遇到的坑是這樣的:
生成的dao文件和同事們的不一致,生成文件成功,但是對(duì)應(yīng)的Columns方法是空的。雖然有這個(gè)方法,但是方法內(nèi)沒有值。我的版本比同事們的略高,我一直以為是這個(gè)原因,各種降級(jí)和同事保持一致的版本后還是不行。
最終發(fā)現(xiàn):是配置文件中連接的數(shù)據(jù)庫不對(duì)。
因?yàn)闆]有連接到數(shù)據(jù)庫,所以取不到列值;但是因?yàn)榕渲梦募屑s定了表名,文件正常生成了。
如果你也遇到了類似問題,去排查一下配置文件吧。
設(shè)置參數(shù)可傳可不傳
這個(gè)場(chǎng)景和是否使用GoFrame框架沒關(guān)系,如果你也需要設(shè)置這個(gè)參數(shù)可傳可不傳,也能這么搞:
使用 ...interface{}
比如:
model作為結(jié)構(gòu)體類型
當(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)體中,很清晰,也能避免有遺漏。
模型關(guān)聯(lián)
關(guān)于模型關(guān)聯(lián),官方是這么說的:
GoFrame的ORM沒有采用其他ORM常見的BelongsTo, HasOne, HasMany, ManyToMany這樣的模型關(guān)聯(lián)設(shè)計(jì),這樣的關(guān)聯(lián)關(guān)系維護(hù)較繁瑣,例如外鍵約束、額外的標(biāo)簽備注等,對(duì)開發(fā)者有一定的心智負(fù)擔(dān)。因此gf框架不傾向于通過向模型結(jié)構(gòu)體中注入過多復(fù)雜的標(biāo)簽內(nèi)容、關(guān)聯(lián)屬性或方法,并一如既往地嘗試著簡(jiǎn)化設(shè)計(jì),目標(biāo)是使得模型關(guān)聯(lián)查詢盡可能得易于理解、使用便捷。
我也花時(shí)間整理了自己在項(xiàng)目中的示例,但是發(fā)現(xiàn)自己整理的例子沒有官網(wǎng)的好理解,所以最終我還是把自己的例子刪掉了。
「模型關(guān)聯(lián)」這部分比較硬核且實(shí)用,但是也確實(shí)有理解成本。
大家還是看官方示例吧:
「模型關(guān)聯(lián)-動(dòng)態(tài)關(guān)聯(lián)-ScanList」:https://goframe.org/pages/viewpage.action?pageId=1114326
「模型關(guān)聯(lián)-靜態(tài)關(guān)聯(lián)-With特性」:https://goframe.org/pages/viewpage.action?pageId=7297190
我也會(huì)把官方示例放到閱讀原文中,方便大家去查看。
添加數(shù)據(jù)
goframe非常靈活,插入的數(shù)據(jù)可以是結(jié)構(gòu)體也可以是map,也可以是map類型的切片,來實(shí)現(xiàn)批量添加。
舉個(gè)栗子:
主程序如下:
MainImgs的定義:
批量插入數(shù)據(jù)
batch指定了批量插入時(shí)一次插入的條數(shù)
配置插件自動(dòng)生成service
如果你在用goframe V2.1 以上版本,生成service強(qiáng)烈建議配置goland插件,而不是每次修改logic后手動(dòng)敲腳本。
配置方式如下:
配置文件鏈接:https://goframe.org/pages/viewpage.action?pageId=49770772&preview=/49770772/49770777/watchers.xml
小技巧:當(dāng)自動(dòng)生成的文件報(bào)錯(cuò),或者出現(xiàn)一些“神奇的問題”,建議把生成的文件刪除掉。在對(duì)應(yīng)的logic代碼空白處隨便敲個(gè)回車或者空格就能生成新的service文件。
注意:千萬不要手動(dòng)修改自動(dòng)生成的代碼。(因?yàn)樽约盒薷牡拇a后期肯定會(huì)被覆蓋掉)
總結(jié)
紙上得來終覺淺,覺知此事要躬行。
編程是一門手藝活,一定多動(dòng)手,重實(shí)踐,才能獲得長(zhǎng)足的進(jìn)步。
本文轉(zhuǎn)載自微信公眾號(hào)「 程序員升級(jí)打怪之旅」,作者「王中陽Go」,可以通過以下二維碼關(guān)注。
轉(zhuǎn)載本文請(qǐng)聯(lián)系「 程序員升級(jí)打怪之旅」公眾號(hào)。