MyBatis 使用 foreach 批量插入
yml文件
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/db3?serverTimezone=Asia/Shanghai&allowMultiQueries=trueusername: rootpassword: rootmybatis:type-aliases-package: com.mozq.boot.sbmybatis02.domainmapper-locations: classpath:mapper/*Mapper.xml
第1种方式 单条语句插入多个值
可以使用 useGeneratedKeys
返回每个插入记录的主键。
修改 Mapper 添加批量插入方法
@Mapper
public interface UserMapper {void batchSave(List<User> userList);
}
修改映射文件 添加批量插入映射语句
<insert id="batchSave">insert into user(name, password) values<foreach collection="list" item="user" separator=",">(#{user.name}, #{user.password})</foreach>
</insert>
测试接口
@RunWith(SpringRunner.class)
@SpringBootTest
public class SbMybatis02ApplicationTests {@Testpublic void testBatchSave(){User user1 = new User();user1.setName("关羽");user1.setPassword("guanyu");User user2 = new User();user2.setName("张飞");user2.setPassword("zhangfei");List<User> userList = new ArrayList<>();userList.add(user1);userList.add(user2);userMapper.batchSave(userList);}
}
第2种方式 多条语句插入多个值
如果插入的同时获取主键,则只有第1条记录可以获取到,其他记录获取不到生成的主键。
修改 Mapper 添加批量插入方法
@Mapper
public interface UserMapper {void batchSave(List<User> userList);
}
修改映射文件 添加批量插入映射语句
<insert id="batchSave"><foreach collection="list" item="user" separator=";">insert into user(name, password) values(#{user.name}, #{user.password})</foreach>
</insert>
修改 jdbcUrl 允许执行多条语句
jdbc:mysql://localhost:3306/db3?serverTimezone=Asia/Shanghai&allowMultiQueries=true
测试接口
@RunWith(SpringRunner.class)
@SpringBootTest
public class SbMybatis02ApplicationTests {@Testpublic void testBatchSave(){User user1 = new User();user1.setName("关羽");user1.setPassword("guanyu");User user2 = new User();user2.setName("张飞");user2.setPassword("zhangfei");List<User> userList = new ArrayList<>();userList.add(user1);userList.add(user2);userMapper.batchSave(userList);}
}
MyBatis 使用 foreach 批量插入相关推荐
- Mybatis使用foreach批量插入Oracle提示命令未正确结束
错误代码 <insert id="multiInsertTest" parameterType="java.util.List">INSERT IN ...
- mybatis多个foreach_使用 Mybatis 的 foreach 批量模糊 like 查询及批量插入
使用 mybatis 平时都是用遍历集合 in ( ) ....,其实还可以多模糊查询和批量操作等其他操作,要明白 foreach 元素的属性主要意义,灵活使用,举例如下. 1.根据多个品牌名字分类, ...
- Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案
Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 参考文章: (1)Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 (2)https://www.cnblogs. ...
- Mybatis foreach 批量插入
在mybatis中可以使用foreach标签做批量插入和更新操作,以批量插入为例: <insert id="insertMsg" parameterType="xz ...
- Java mybatis实现mysql批量插入
记录下来方便自己,同时也希望能对比较迷惑的小盆友有所帮助 1.把批量插入的数据生成一个List集合 2.用java控制一次插入的条数和集合 // 每次插入10条int len = count, inc ...
- 16、mybatis动态sql 批量插入
文章目录 1.EmployeeMapper 2.EmployeeMapper.xml(以逗号间隔执行一条语句)(推荐) 3.Test 4.以分号间隔执行每条语句(第二种方式) 5.Oracle下的批量 ...
- 转:Mybatis与JDBC批量插入数据库哪个更快
转自 http://www.cnblogs.com/fnz0/p/5713102.html, https://www.cnblogs.com/wxw7blog/p/8706797.html [转]: ...
- Mybatis 批量操作(批量插入、批量更新、批量删除)总结
文章目录 一.批量插入 二.批量更新 三.批量删除 一.批量插入 <insert id="insertBatch" parameterType="java.util ...
- mybatis以及mybatisplus批量插入问题
1. 思路分析: 批量插入是我们日常开放经常会使用到的场景,一般情况下我们也会有两种方案进行实施,如下所示. 方案一 就是用 for 循环循环插入: 优点:JDBC 中的 PreparedStatem ...
最新文章
- 5G的3大应用场景落地开花,中国或将引领全球5G产业发展
- 训练作用_不同振幅的振动训练对身体的作用
- 全球与中国氢燃料电池液冷泵市场发展现状调查与投资前景预测报告2022-2028年版
- 买房贷款被拒,该如何补救?
- DotNet关键知识点——WPF篇(一)(范德成编辑批注版)
- oracle如何往dg加盘_oracle 在物理机上添加磁盘操作
- python开发的一些tips
- 【机器学习】feature_importances_ 参数源码解析
- 陆奇给工程师们的5个建议
- LeetCode 1753. 移除石子的最大得分(优先队列)
- [设计模式] ------ 工厂方法模式
- 数据库原理—数据库基础(二)
- 浙江哪个地方的杨梅最出名?
- Java mongo入门
- 三极管共射放大电路的放大倍数怎么设计?
- 华为手机解析出现问题
- 由对称引起的空间结构耦合效应
- SQL,什么时候用自身连接????
- 刷脸支付是新的创业风口,刷脸支付推广线下商户策略!干货分享!
- c语言课程设计文献检索,文献检索课学习心得三篇(2)
热门文章
- 惯性积计算实例_关于材料力学中惯性矩的认识00
- Leetcode每日一题:203.remove-linked-list-elements(移除链表元素)
- 西瓜书+实战+吴恩达机器学习(十三)监督学习之随机森林 Random Forest
- 逻辑回归python实现
- ipython控制台 绘图 后端_如何面试Python后端工程师?
- pos机改造迷你打印机_小票打印机如何自动弹出钱箱
- Linux配置JAVA环境变量(图文教程)
- oracle的一些常见问题及处理
- vue移动端点击事件延迟_去除点击事件300ms延迟 (使用了vue之后)
- Android辅助服务监听dialog,Android开发中对话框辅助类——DialogHelper