Mybatis批量操作

ops/2025/3/18 18:35:19/

1、批量插入

 <!--批量操作-插入--><!-- 相当于INSERT INTO t_goods (c1,c2,c3) VALUES (a1,a2,a3),(b1,b2,b3),(d1,d2,d3),...--><insert id="batchInsert" parameterType="java.util.List">INSERT INTO t_goods (title,sub_title,original_cost,current_price,discount,is_free_delivery,category_id) VALUES<foreach collection="list" item="item" index="index" separator=",">(#{item.title},#{item.subTitle},#{item.originalCost},#{item.currentPrice},#{item.discount},#{item.isFreeDelivery},#{item.categoryId})</foreach></insert>

测试

 @Testpublic void batchInsertTest(){SqlSession sqlSession = null;try {sqlSession = MyBatisUtil.getSqlSession();PageHelper.startPage(1, 6);GoodsMapper mapper = sqlSession.getMapper(GoodsMapper.class);List<Goods> goodsList = new ArrayList<Goods>();for (int i = 0; i < 10; i++) {Goods goods = new Goods();goods.setTitle("测试产品"+i);goods.setSubTitle("测试产品副标题"+i);goods.setDiscount(0.88f);goods.setIsFreeDelivery(1);goods.setOriginalCost(155f);goods.setCategoryId(40);goods.setCurrentPrice(888f);goodsList.add(goods);}int insert = mapper.batchInsert(goodsList);if (insert == goodsList.size()) {sqlSession.commit();System.out.println("插入数据成功");}else{System.out.println("插入数据失败");sqlSession.rollback();}} catch (Exception e) {System.out.println("插入数据失败");sqlSession.rollback();throw new RuntimeException(e);} finally {sqlSession.close();}}

1、批量插入数据无法获得插入数据的id,若后续需要使用该id继续操作,需要想别的办法
2、若批量插入的数据太多,生成的批量插入SQL过长,可能会被服务器拒绝,可以改为分成几次来完成

2、批量删除

<!--批量操作-删除-->
<!--相当于DELETE FROM t_goods WHERE goods_id IN (a1,a2,a3,a4,a5...)
-->
<delete id="batchDelete" parameterType="java.util.List">DELETE FROM t_goods WHERE goods_id IN<foreach collection="list" item="item" index="index" separator=","  open="(" close=")">#{item}</foreach>
</delete>

测试:

@Testpublic void batchDeleteTest(){SqlSession sqlSession = null;try {sqlSession=MyBatisUtil.getSqlSession();GoodsMapper mapper = sqlSession.getMapper(GoodsMapper.class);List<Integer> parameterList = Arrays.asList(2600, 2601,2602);int delete = mapper.batchDelete(parameterList);if (delete == parameterList.size()) {System.out.println("删除数据成功");sqlSession.commit();}else{System.out.println("删除数据失败");sqlSession.rollback();}} catch (Exception e) {System.out.println("删除数据失败");sqlSession.rollback();throw new RuntimeException(e);} finally {sqlSession.close();}}

http://www.ppmy.cn/ops/166840.html

相关文章

数据库系统原理|课程回顾与习题部分参考答案

YI时间&#xff5c;松子茶碎碎念&#xff5c;MM-DFW&#xff5c;LAMBDA系列 星标&#x1f31f;松子茶 更新不掉队&#x1f31f; 作者 | 松子茶 © 原创内容(除图片) 未经作者授权&#xff0c;严禁转载或镜像 一、课程简介 《数据库系统原理》课程是计算机科学与技术专…

信奥赛CSP-J复赛集训(模拟算法专题)(18):P8318 『JROI-4』淘气的猴子

信奥赛CSP-J复赛集训(模拟算法专题)(18):P8318 『JROI-4』淘气的猴子 题目描述 jockbutt 有一个正整数序列,长度为 n n n,分别为 a 1 , a 2 . . . a n a_1,a_2...a_n a1​,a2​...an​,她非常喜欢这个序列,平时都非常爱惜它们。 可是有一天,当 jockbutt 在和你约…

maven之自定义插件

写在前面 在使用maven肯定是离不开插件的&#xff0c;比如执行mvn clean或者时mvn compile其实运行的就是绑定的默认插件。虽然我们一般不需要来自定义插件&#xff0c;但是为了使用的过程中更加的清晰&#xff0c;来尝试自定义插件还是很有必要的&#xff0c;所以本文就一起来…

基于 Docker 和 Flask 构建高并发微服务架构

基于 Docker 和 Flask 构建高并发微服务架构 一、微服务架构概述 &#xff08;一&#xff09;微服务架构的优点 微服务架构是一种将应用程序拆分为多个小型、自治服务的架构风格&#xff0c;在当今的软件开发领域具有显著的优势。 高度可扩展性&#xff1a;每个微服务可以独…

前端面试:ajax 和 xhr 是什么关系?

在前端开发中&#xff0c;AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;和 XHR&#xff08;XMLHttpRequest&#xff09;是两个密切相关但有些不同的概念。以下是对这两者的详细解释及其关系&#xff1a; 1. AJAX 定义&#xff1a;AJAX 是一个用于创建异步 we…

centos Supported Java versions are: [17, 21]

在 CentOS 系统中&#xff0c;支持的 Java 版本取决于你使用的 CentOS 版本以及你所使用的 Oracle JDK 或 OpenJDK 的版本。截至我所知的信息&#xff0c;截至2023年&#xff0c;CentOS 7 和 CentOS 8 都已经停止官方支持&#xff0c;并被各自的替代版本取代&#xff0c;即 Cen…

STM32 - 在机器人领域,LL库相比HAL优势明显

在机器人控制器、电机控制器等领域的开发&#xff0c;需要高实时性、精细化控制或者对代码执行效率、占用空间有较高要求。所以&#xff0c;大家常用的HAL库明显不符合要求。再加上&#xff0c;我们学习一门技术&#xff0c;一定要学会掌握底层的原理。MCU开发的底层就是寄存器…

代理导致虚拟机无法连接网络解决办法

虚拟机使用代理科学上网后&#xff0c;当关闭代理&#xff0c;虚拟机无法连接原来的网络解决方法 重启虚拟机网络服务器&#xff1a;ctrlaltt打开虚拟机命令终端&#xff0c;依次输入以下指令&#xff1a; sudo service network-manager stop sudo rm /var/lib/NetworkManager…