MySQL进行 批量插入,批量删除,批量更新,批量查询
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进行 批量插入,批量删除,批量更新,批量查询的更多相关文章
- mybatis + mysql 批量插入、删除、更新
mybatis + mysql 批量插入.删除.更新 Student 表结构 批量插入 public int insertBatchStudent(List<Student> studen ...
- mysql DML 数据插入,删除,更新,回退
mysql插入,删除,更新地址:https://wenku.baidu.com/view/194645eef121dd36a32d82b1.html http://www.cnblogs.com/st ...
- java操作MySQL数据库(插入、删除、修改、查询、获取所有行数)
插播一段广告哈:我之前共享了两个自己写的小应用,见这篇博客百度地图开发的两个应用源码共享(Android版),没 想到有人找我来做毕设了,年前交付,时间不是很紧,大概了解了下就接下了,主要用到的就是和 ...
- SqlServer设置特定用户操作特定表(插入、删除、更新、查询 的权限设置)
目录 一.需求场景: 二.操作步骤: 表上右键选择[属性],选择[权限]选项卡: 点击[搜索],在弹出的框中点击[浏览],选择需要设置的用户: 在上面点击[确定]后,就可以在[权限]选项卡中看到权限列 ...
- 个人永久性免费-Excel催化剂功能第32波-空行空列批量插入和删除
批量操作永远是效率提升的王道,也是Excel用户们最喜欢能够实现的操作虽说有些批量操作不一定合适Excel的最佳实践操作,但万千世界,无奇不有,特别是在国人眼中领导最大的等级森严的职场环境下.Exce ...
- JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能
主要内容: JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十 ...
- arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
风过无痕 原文 arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新 深入理解游标Cursors,实现数据的快速查找,插入,删除,更新 1.查找数据Search Cu ...
- SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)
临时表:Test /****** 对象: Table [dbo].[Test] 脚本日期: 05/10/2013 11:42:07 ******/ SET ANSI_NULLS ON GO SET Q ...
- mybatis使用foreach进行批量插入和删除操作
一.批量插入 1.mapper层 int insertBatchRoleUser(@Param("lists") List<RoleUser> lists);//@Pa ...
- .net使用SqlBulkCopy类操作DataTable批量插入数据库数据,然后分页查询坑
在使用SqlBulkCopy类操作DataTable批量插入数据,这种操作插入数据的效率很高,就会导致每一条数据在保存的时间基本一样,在我们分页查询添加的数据是,使用数据的添加时间来排序就会出现每页的 ...
随机推荐
- 2021.12.10 P2516 [HAOI2010]最长公共子序列(动态规划+滚动数组)
2021.12.10 P2516 [HAOI2010]最长公共子序列(动态规划+滚动数组) https://www.luogu.com.cn/problem/P2516 题意: 给定字符串 \(S\) ...
- HTML中的Hack手段之条件注释
通常WEB的好处就是可以跨平台,但这个世界偏偏有个另类,就是IE浏览器.在平常做HTML设计时,有时需要为IE的表示差异而不得不使用一些Hack手段.条件注释就是这类手段之一. 条件注释是IE浏览器的 ...
- oracle提交后再回滚解决办法
BEGIN; 刚才改错数据,直接commit了,rollback了下,没效果,经过google,oracle有个 闪回 功能,经测试,可用. -- 查询闪回id 如:06001B00054E0000 ...
- 6.2 计划任务crond
创建.编辑计划任务的命令为crontab -e,查看当前计划任务的命令为crontab -l,删除某条计划任务的命令为crontab -r. 参数 作用 -e 编辑计划任务 -u 指定用户名称 -l ...
- 【审视】Scrum Master的检查清单
一般情况下,一个Scrum Master如果更多的是做组织会议.确保时间盒以及对流程中的障碍快速响应等事项的话,可以同时引导2-3个团队.在这种情况下,团队会在降低问题发生率的基础上提高一定的绩效. ...
- delete-drop语句生成的存储过程
问题: 开发时有时候需要对很多表进行操作. 例如:清空(删除)所有(某些)表,删除所有表某时间点之后导入的数据(类似于回滚) 解决方式: 对选定的表集合执行相同的查询条件(可为空),如果这个执行结果大 ...
- Java学习笔记-学生管理系统
Java学习笔记 一个Student类 public class Student { private String sid; private String name; private String a ...
- drools session理解
一.理解 在drools中存在2种session,一种是有状态的Session (Stateful Session),另外一种一种是无状态的Session (Stateless Session). 1 ...
- Es6语法+v-on参数相关+vue虚拟dom
Es6的语法 Es5:if和for 都没有块级作用域,函数function有作用域. Es6:加入let使得if和for有作用域 .建议: 在Es6中优先使用const,只有需要改变某一个标识符的时候 ...
- CabloyJS也有工作流引擎了,是你想要的吗?
前言 众所周知,NodeJS作为后端开发语言和运行环境,样样都好,就差一个NodeJS工作流引擎.CabloyJS 4.0重点开发了NodeJS工作流引擎,并作为内置的基础核心模块,近一步拓展了Nod ...