1、批量插入

ServiceImpl层

List<Person> addPeople = new ArrayList<>(); //addPeople存放多个Person对象
personMapper.insetPeopleReturnIds(addPeople);

Dao层接口(这里的注解param中的list对应xml中的 collection的值, 两者要保持一致! )

int insetPeopleReturnIds(@Param("list") List<Person> addPeople);

Mapper.xml

(keyColumn是数据库的字段,keyProperty对应的是实体类的属性,为的是让ID自增长)

<insert id="insetPeopleReturnIds" keyColumn="person_id" keyProperty="personId" parameterType="java.util.List"
useGeneratedKeys="true">
insert into person (person_name, id_type,
id_num, phone,org_id)
values
<foreach collection="list" index="index" item="item" separator=",">
(#{item.personName,jdbcType=VARCHAR}, #{item.idType,jdbcType=INTEGER},
#{item.idNum,jdbcType=VARCHAR}, #{item.phone,jdbcType=VARCHAR},#{item.orgId,jdbcType=INTEGER})
</foreach>
</insert>

2、批量删除

ServiceImpl层

List<String> list; //list中作者存放的是字符串,格式["123","456"]
uploadListMapper.deleteByPrimaryUUid(list);

Dao层接口

int deleteByPrimaryUUid(@Param("lists") List<String> list);

Mapper.xml

<delete id="deleteByPrimaryUUid" parameterType="java.util.List">
delete from upload_list
where uuid in
<foreach close=")" collection="lists" index="index" item="item" open="(" separator=",">
#{item,jdbcType=VARCHAR}
</foreach>
</delete>

3、批量更新

ServiceImpl层

List<Person> oldPeople = new ArrayList<>();//oldPeople存放多个person对象
personMapper.updateBatch(oldPeople);

Dao层接口

int updateBatch(@Param("list") List<Person> list);

Mapper.xml

 <update id="updateBatch" parameterType="java.util.List">
update person
<trim prefix="set" suffixOverrides=",">
<trim prefix="person_name =case" suffix="end,">
<foreach collection="list" index="index" item="item">
when person_id = #{item.personId} then #{item.personName}
</foreach>
</trim>
<trim prefix="id_type =case" suffix="end,">
<foreach collection="list" index="index" item="item">
when person_id = #{item.personId} then #{item.idType}
</foreach>
</trim>
<trim prefix="id_num =case" suffix="end,">
<foreach collection="list" index="index" item="item">
when person_id = #{item.personId} then #{item.idNum}
</foreach>
</trim>
<trim prefix="phone =case" suffix="end,">
<foreach collection="list" index="index" item="item">
when person_id = #{item.personId} then #{item.phone}
</foreach>
</trim>
</trim>
where person_id in
<foreach close=")" collection="list" item="item" open="(" separator=",">
#{item.personId}
</foreach>
</update>

4、批量查询

ServiceImpl层

List<String> list; //list中作者存放的是字符串,格式["123","456"]
List<UploadList> uploadLists = uploadListMapper.selectByPrimaryUUid(list);

Dao层接口

List<UploadList> selectByPrimaryUUid(@Param("lists") List<String> list);

Mapper.xml 

 <select id="selectByPrimaryUUid" resultMap="BaseResultMap">
select *
from upload_list
where uuid in
<foreach close=")" collection="lists" index="index" item="item" open="(" separator=",">
#{item,jdbcType=VARCHAR}
</foreach>
</select>

参考文章https://www.cnblogs.com/javalanger/p/10899088.html

https://blog.csdn.net/q957967519/article/details/88669552

MySQL进行 批量插入,批量删除,批量更新,批量查询的更多相关文章

  1. mybatis + mysql 批量插入、删除、更新

    mybatis + mysql 批量插入.删除.更新 Student 表结构 批量插入 public int insertBatchStudent(List<Student> studen ...

  2. mysql DML 数据插入,删除,更新,回退

    mysql插入,删除,更新地址:https://wenku.baidu.com/view/194645eef121dd36a32d82b1.html http://www.cnblogs.com/st ...

  3. java操作MySQL数据库(插入、删除、修改、查询、获取所有行数)

    插播一段广告哈:我之前共享了两个自己写的小应用,见这篇博客百度地图开发的两个应用源码共享(Android版),没 想到有人找我来做毕设了,年前交付,时间不是很紧,大概了解了下就接下了,主要用到的就是和 ...

  4. SqlServer设置特定用户操作特定表(插入、删除、更新、查询 的权限设置)

    目录 一.需求场景: 二.操作步骤: 表上右键选择[属性],选择[权限]选项卡: 点击[搜索],在弹出的框中点击[浏览],选择需要设置的用户: 在上面点击[确定]后,就可以在[权限]选项卡中看到权限列 ...

  5. 个人永久性免费-Excel催化剂功能第32波-空行空列批量插入和删除

    批量操作永远是效率提升的王道,也是Excel用户们最喜欢能够实现的操作虽说有些批量操作不一定合适Excel的最佳实践操作,但万千世界,无奇不有,特别是在国人眼中领导最大的等级森严的职场环境下.Exce ...

  6. JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能

    主要内容:  JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十 ...

  7. arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新

    风过无痕 原文  arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新 深入理解游标Cursors,实现数据的快速查找,插入,删除,更新 1.查找数据Search Cu ...

  8. SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)

    临时表:Test /****** 对象: Table [dbo].[Test] 脚本日期: 05/10/2013 11:42:07 ******/ SET ANSI_NULLS ON GO SET Q ...

  9. mybatis使用foreach进行批量插入和删除操作

    一.批量插入 1.mapper层 int insertBatchRoleUser(@Param("lists") List<RoleUser> lists);//@Pa ...

  10. .net使用SqlBulkCopy类操作DataTable批量插入数据库数据,然后分页查询坑

    在使用SqlBulkCopy类操作DataTable批量插入数据,这种操作插入数据的效率很高,就会导致每一条数据在保存的时间基本一样,在我们分页查询添加的数据是,使用数据的添加时间来排序就会出现每页的 ...

随机推荐

  1. Windbg调试工具命令详解

    .cls -------------------------------清屏 ~ ----------------------------------查看当前程序的所有线程 ~0s --------- ...

  2. 观察者模式与Google Guava EventBus实现

    概述 观察者模式又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种. 它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态变化时,会 ...

  3. docker:compose实战

    1.用docker-compose拉起三个容器:nginx->ghost博客平台->mysql,拉起后可以直接访问ghost博客平台 2.目录结构: ghost: data docker- ...

  4. 【mq】从零开始实现 mq-04-启动检测与实现优化

    前景回顾 [mq]从零开始实现 mq-01-生产者.消费者启动 [mq]从零开始实现 mq-02-如何实现生产者调用消费者? [mq]从零开始实现 mq-03-引入 broker 中间人 [mq]从零 ...

  5. 史上最全Redis面试题(2020最新版)

    一个执着于技术的公众号 导读:2020 年最新版 Redis面试题,两万字干货,为方便读者阅读,已整理为PDF文档,后台回复『redis』即可领取.希望对大家有帮助! 概述 1. 什么是Redis? ...

  6. muduo项目介绍

    在上一个集群聊天服务器项目中,我使用了muduo作为网络库,然后主要实现了业务逻辑等,所以为了深入网络库的代码和实现,我跟着一位老师的代码去实现了muduo库的基本原理和作用,当然只是实现了主体的代码 ...

  7. Centos 7以上安装Docker (亲测有效)

    一.安装前的准备 我的环境是VMware15虚拟机安装的Centos7,Linux内核是3.10.0-1062.4.1.e17.x86_64 1. 用root账户登录查看操作系统内核版本及相关信息 [ ...

  8. netty系列之:使用Jboss Marshalling来序列化java对象

    目录 简介 添加JBoss Marshalling依赖 JBoss Marshalling的使用 总结 简介 在JAVA程序中经常会用到序列化的场景,除了JDK自身提供的Serializable之外, ...

  9. unity---Lighting面板

    打开Lighting面板 将天空盒改为别墅 图片转化为Cube 设置一个材质球

  10. 145_Power BI Report Server自定义Form登录

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 很久没有更新Power BI Report Server了,发现自己机器还是2021年1月版本的,现在更新了20 ...