背景
最近开发过程中遇到了一个需求,需要把钉钉组织加架构里面的部门信息导入到数据库中。部门是会变动的,所以如果部门变动了,就需要更新一下这张表。 但是无论部门怎么变动,一个已经存在的部门的id是不会变的。
所以,当钉钉的组织架构变动的时候,我们需要把老的部门更新,新的部门创建。 我最初想的是,使用if else语句,if dept_id已经存在,那就更新,反之则创建,但是我感觉这样有些不太专业,gorm应该会直接有现成的功能,果然,在我一番搜索之后,终于找到了。
具体实现
使用一个gorm操作,智能化的完成上面操作。 我们就可以用到Upsert 了。
创建 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
![](https://img-blog.csdnimg.cn/img_convert/25fcfbed34d2211579006d90d47fed51.png)
上面的一句英文 Update columns to new value on `id` conflict 意思是,如果id已经存在了,那我就更新,反之id不存在,那我就插入。
第一次执行,全部插入
![](https://img-blog.csdnimg.cn/img_convert/47ae20e2564e114e63272e7d510ae94d.png)
然后我把那个1手动改成2
![](https://img-blog.csdnimg.cn/img_convert/0697ed87940b66fd5354a4d6ec2b268b.png)
然后再去使用钉钉接口获取一次,这个使用如果只有这个2变成了1,那就代表成功了
![](https://img-blog.csdnimg.cn/img_convert/c90f5aced8d969677ace3985ef8bc0e7.png)
最后附上部门表结构
![](https://img-blog.csdnimg.cn/img_convert/20b0c03ca1a640810619955bfe8a8e1f.png)
具体代码
![](https://img-blog.csdnimg.cn/img_convert/6f289433f67562886d9d196707218bd0.png)