当前位置: 首页 > news >正文

网站基本常识广州番禺区核酸检测点

网站基本常识,广州番禺区核酸检测点,国内最新十大新闻,wordpress显示切换到桌面版场景:一张用户表user,此时我需要批量新增用户,如果用户已经存在了,则更新该条记录;如果用户不存在,则插入一条数据。 痛点:常规做法新增更新各写一个接口。而且是批量操作,比较繁琐&…

场景:一张用户表user,此时我需要批量新增用户,如果用户已经存在了,则更新该条记录;如果用户不存在,则插入一条数据。
痛点:常规做法新增更新各写一个接口。而且是批量操作,比较繁琐,容易出错。不优雅。
改进:mysql支持ON DUPLICATE KEY UPDATE的写法,这种做法可以优雅处理批量更新和插入。

在MYSQL中,使用INSERT INTO … ON DUPLICATE KEY UPDATE语句来在插入或更新数据时,利用唯一索引,来更新其他字段。

举例,user表:

字段含义
id主键
work_number工号,唯一索引
address地址
phone电话
birthday生日

在批量新增员工信息的时候,id自增,工号是唯一的,不允许重复。当work_number不存在的时候,希望在user表中插入一条新纪录;反之work_number存在的时候,对该条记录更新其它属性(address、phone、birthday)。

INSERT INTO user (work_number, address, phone, birthday)
VALUES ('10001', '员工宿舍101', '15708181900', '2002-5-13')
ON DUPLICATE KEY UPDATE 
address VALUES(address), 
phone VALUES(phone), 
birthday VALUES(birthday)

在这个示例中,我们省略了 id 字段,因为它是自增的,数据库会自动为新插入的记录生成一个唯一的 id 值。我们只需提供除 id 之外的字段值,并利用唯一索引work_number来检查是否存在匹配记录。如果匹配到现有记录,就会执行 ON DUPLICATE KEY UPDATE 部分,更新其他字段的值。

如果你需要进行批量插入,聪明的你一定能想到使用MyBatis提供的foreach标签。

INSERT INTO user (work_number, address, phone, birthday)
VALUES<foreach item="item" index="index" collection="list" separator=",">(#{item.work_number},#{item.address},#{item.phone},#{item.birthday})</foreach>
ON DUPLICATE KEY UPDATE 
address VALUES(address), 
phone VALUES(phone), 
birthday VALUES(birthday)

再举一个例子,如果我们新增一个部门属性department_number,然后唯一索引变成唯一组合索引(department_number, work_number),此时sql应该变成什么样了呢?
user表新增部门属性:

字段含义
id主键
deparment_number部门号,唯一组合索引(deparment_number,work_number )
work_number工号
address地址
phone电话
birthday生日
INSERT INTO user (department_number, work_number, address, phone, birthday)
VALUES ('001', '10001', '员工宿舍101', '15708181900', '2002-5-13')
ON DUPLICATE KEY UPDATE 
address VALUES(address), 
phone VALUES(phone), 
birthday VALUES(birthday)

在该示例中,我们省略了 id 字段,因为它是自增的,数据库会自动为新插入的记录生成一个唯一的 id 值。我们只需提供除 id 之外的字段值,并利用唯一组合索引department_number,work_number来检查是否存在匹配记录。如果匹配到现有记录,就会执行 ON DUPLICATE KEY UPDATE 部分,更新其他字段的值。

批量的和上面批量例子相同,大家可以参照。

在service层的逻辑就变成了简单地把待插入的数据集合传到mapper,然后通过sql去插入或者更新,可谓是非常优雅了。

http://www.yayakq.cn/news/585473/

相关文章:

  • 网站服务器如何搭建科技网络公司经营范围
  • 做视频播放网站 赚钱wordpress多域名更改
  • 网站只做五周免费logo设计一键生成无水印图片
  • 深圳专业做网站哪家好江北网站建设的技术
  • 曹县做网站手机怎么做网站添加背景音乐
  • 网站风格有哪些类型直播网站建设
  • 遵义在百度做个网站多少钱南京房地产网站
  • 1688域名网站公司刚成立网站怎么做
  • 潮阳网站建设公司dw网站模板免费下载
  • 营销型企业网站建设与推广html5软件下载手机版
  • 百度网站怎么用沈阳高端网站
  • 影视网站怎么做内链素材下载免费
  • 郑州做网站的公司msgg专题网站搭建
  • php 网站开发360网站建设与架构男友实验
  • 网站建设与管理考查方案如何打开微信小程序
  • 北京优化网站建设中国核工业第二三建设有限公司
  • 住房和建设厅网站首页最近的头条新闻
  • 手机在线网站做网站学哪方面知识
  • 泉州网站制作建设女生学电子商务好吗
  • 鲜花网站建设解决方案wordpress信息分类系统主题
  • seo整站优化服务海外推广电商
  • 食品企业网站建设方案高端网站建设要到磐石网络
  • 贵阳白云区城乡建设局网站wordpress安装的模板文件在哪个文件夹
  • 做qq链接的网站徐州 网站 备案 哪个公司做的好
  • 做网站主要来源网站关键词添加多少个
  • wordpress如何更新缓存seo教学
  • 监理建设协会网站起名网站开发
  • 镇江网站设计哪家好做网站赚金币
  • 关于网站建设的工作总结国际贸易网址
  • 网站设计模板psd问答类网站怎么做