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. 2021.12.10 P2516 [HAOI2010]最长公共子序列(动态规划+滚动数组)

    2021.12.10 P2516 [HAOI2010]最长公共子序列(动态规划+滚动数组) https://www.luogu.com.cn/problem/P2516 题意: 给定字符串 \(S\) ...

  2. HTML中的Hack手段之条件注释

    通常WEB的好处就是可以跨平台,但这个世界偏偏有个另类,就是IE浏览器.在平常做HTML设计时,有时需要为IE的表示差异而不得不使用一些Hack手段.条件注释就是这类手段之一. 条件注释是IE浏览器的 ...

  3. oracle提交后再回滚解决办法

    BEGIN; 刚才改错数据,直接commit了,rollback了下,没效果,经过google,oracle有个 闪回 功能,经测试,可用. -- 查询闪回id 如:06001B00054E0000 ...

  4. 6.2 计划任务crond

    创建.编辑计划任务的命令为crontab -e,查看当前计划任务的命令为crontab -l,删除某条计划任务的命令为crontab -r. 参数 作用 -e 编辑计划任务 -u 指定用户名称 -l ...

  5. 【审视】Scrum Master的检查清单

    一般情况下,一个Scrum Master如果更多的是做组织会议.确保时间盒以及对流程中的障碍快速响应等事项的话,可以同时引导2-3个团队.在这种情况下,团队会在降低问题发生率的基础上提高一定的绩效. ...

  6. delete-drop语句生成的存储过程

    问题: 开发时有时候需要对很多表进行操作. 例如:清空(删除)所有(某些)表,删除所有表某时间点之后导入的数据(类似于回滚) 解决方式: 对选定的表集合执行相同的查询条件(可为空),如果这个执行结果大 ...

  7. Java学习笔记-学生管理系统

    Java学习笔记 一个Student类 public class Student { private String sid; private String name; private String a ...

  8. drools session理解

    一.理解 在drools中存在2种session,一种是有状态的Session (Stateful Session),另外一种一种是无状态的Session (Stateless Session). 1 ...

  9. Es6语法+v-on参数相关+vue虚拟dom

    Es6的语法 Es5:if和for 都没有块级作用域,函数function有作用域. Es6:加入let使得if和for有作用域 .建议: 在Es6中优先使用const,只有需要改变某一个标识符的时候 ...

  10. CabloyJS也有工作流引擎了,是你想要的吗?

    前言 众所周知,NodeJS作为后端开发语言和运行环境,样样都好,就差一个NodeJS工作流引擎.CabloyJS 4.0重点开发了NodeJS工作流引擎,并作为内置的基础核心模块,近一步拓展了Nod ...