Gorm存在時更新,不存在時創(chuàng)建的問題
背景
最近開發(fā)過程中遇到了一個需求,需要把釘釘組織加架構(gòu)里面的部門信息導(dǎo)入到數(shù)據(jù)庫中。
部門是會變動的,所以如果部門變動了,就需要更新一下這張表。
但是無論部門怎么變動,一個已經(jīng)存在的部門的id是不會變的。
所以,當(dāng)釘釘?shù)慕M織架構(gòu)變動的時候,我們需要把老的部門更新,新的部門創(chuàng)建。
我最初想的是,使用if else語句,if dept_id已經(jīng)存在,那就更新,反之則創(chuàng)建,但是我感覺這樣有些不太專業(yè),gorm應(yīng)該會直接有現(xiàn)成的功能,果然,在我一番搜索之后,終于找到了。
具體實現(xiàn)
使用一個gorm操作,智能化的完成上面操作。 我們就可以用到Upsert 了。
創(chuàng)建 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
上面的一句英文 Update columns to new value on `id` conflict 意思是:
如果id已經(jīng)存在了,那我就更新,反之id不存在,那我就插入。
第一次執(zhí)行,全部插入
然后我把那個1手動改成2
然后再去使用釘釘接口獲取一次,這個使用如果只有這個2變成了1,那就代表成功了
最后附上部門表結(jié)構(gòu)
具體代碼
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
k8s容器互聯(lián)-flannel?host-gw原理篇
這篇文章主要為大家介紹了k8s容器互聯(lián)-flannel?host-gw原理篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04多階段構(gòu)建優(yōu)化Go?程序Docker鏡像
這篇文章主要為大家介紹了多階段構(gòu)建優(yōu)化Go?程序Docker鏡像,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08