前言

Mysql插入不重复的数据,当大数据量的数据需要插入值时,要判断插入是否重复,然后再插入,那么如何提高效率?解决的办法有很多种,不同的场景解决方案也不一样,数据量很小的情况下,怎么搞都行,但是数据量很大的时候,这就不是一个简单的问题了。

一、insert ignore into

会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过当前插入的这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

控制器方法:

/** * 插入员工数据 */@PostMapping("save")@ResponseBodypublic CommonResult<Employee> save(@RequestBody Employee employee){    return employeeService.saveEmp(employee);}

在这里插入图片描述

加上ignore,再次添加一条ID=1的员工记录

INSERT IGNORE INTO

二、on duplicate key update

当主键或者唯一键重复时,则执行update语句。

 ON DUPLICATE KEY UPDATE id = id

在这里插入图片描述

查看数据库记录:

在这里插入图片描述

可以看到并没有改变,数据也只有一条,并且返回了成功的提示。

这种方法有个前提条件,就是,需要插入的约束,需要是主键或者唯一约束(在你的业务中那个要作为唯一的判断就将那个字段设置为唯一约束也就是unique key)。

扩展:这种方式还有其他业务场景的需求->>>定时更新其他字段。

我们在员工表中,再加入一个时间字段:

private Date updateTime;
<insert id="saveEmp" parameterType="com.dt.springbootdemo.entity.Employee">    INSERT INTO t_employee(id, name, age, salary, department_id,update_time)    VALUES (#{id},#{name},#{age},#{salary},#{departmentId},now())    ON DUPLICATE KEY UPDATE update_time = now()</insert>
REPLACE INTO
@PostMapping("save")@ResponseBodypublic CommonResult<Employee> save(@RequestBody List<Employee> employeeList){    return employeeService.saveEmp(employeeList);}

更多相关文章

  1. [置顶] android 批量插入数据
  2. [Linux] 批量查看Android应用程序的文件名称;
  3. android批量获取res文件中的drawable图片
  4. Eclipse中使用Ant打Android包报错及解决方案
  5. Windows下git下载android source
  6. Android批量打包提速 - 1分钟900个市场不是梦
  7. Android恶意样本批量获取方法
  8. 用gradle 来打包Android
  9. Eclipse中使用Ant打Android包报错解决方案 – Perhaps JAVA_HOME

随机推荐

  1. php抽象类和接口之间有什么区别?
  2. PHP中什么是命名空间?为什么使用命名空间?
  3. 一起聊聊php中的传统三层架构
  4. 手把手教你学PHP,学习心得分享!!
  5. 详解PHP中PHP-FPM是什么?有什么用?
  6. 带你了解php的三个常用框架:thinkphp、yaf
  7. PHP解析XML的几种方法(附代码)
  8. 示例Ajax异步传输与PHP实现交互
  9. 一起看看php实现购物车产品删除功能(2)
  10. 详解PHP基础算法:冒泡、选择、插入、快速