MyBatis批处理,使用foreach

这篇具有很好参考价值的文章主要介绍了MyBatis批处理,使用foreach。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.批量插入

	<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>

测试代码:

/**
     * 批量插入测试
     */
    @Test
    public void testBatchInsert(){
        SqlSession session=null;
        try{
            long st=new Date().getTime();
            session=MyBatisUtils.openSession();
            List list=new ArrayList();
            for (int i = 0; i < 10000; i++) {
                Goods goods=new Goods();
                goods.setTitle("测试商品");
                goods.setSubTitle("测试子标题");
                goods.setOriginalCost(200f);
                goods.setCurrentPrice(100f);
                goods.setDiscount(0.5f);
                goods.setIsFreeDelivery(1);
                goods.setCategoryId(43);
                list.add(goods);
            }
//            insert()方法返回值代表本次成功插入的记录总数
            session.insert("goods.batchInsert",list);
//            提交事务数据
            session.commit();
            long et=new Date().getTime();
            System.out.println("执行时间:"+(et-st)+"毫秒");
        }catch(Exception e){
            throw e;
        }finally{
            MyBatisUtils.closeSession(session);
        }
    }

批量插入数据的局限性:

  • 无法获取插入数据的id

  • 批量生成的SQL太长,可能会被服务器拒绝

2.批量删除

	<delete id="batchDelete" parameterType="java.util.List">
        delete from t_goods where goods_id in
        <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
            #{item}
        </foreach>
    </delete>

测试代码文章来源地址https://www.toymoban.com/news/detail-733252.html

/**
     * 批量删除测试
     */
    @Test
    public void testBatchDelete(){
        SqlSession session=null;
        try{
            long st=new Date().getTime();
            session=MyBatisUtils.openSession();
            List list=new ArrayList();
              list.add(1910);
              list.add(1911);
              list.add(1912);
              list.add(1913);
//            delete()方法返回值代表本次成功删除的记录总数
            session.delete("goods.batchDelete",list);
//            提交事务数据
            session.commit();
            long et=new Date().getTime();
            System.out.println("执行时间:"+(et-st)+"毫秒");
        }catch(Exception e){
            throw e;
        }finally{
            MyBatisUtils.closeSession(session);
        }
    }

到了这里,关于MyBatis批处理,使用foreach的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows 批处理(bat) if条件判断语句使用教程

    在bat脚本中,if条件判断语句共有6种比较操作符,分别为 操作符(不区分大小写) 描述 全称 equ 等于 equal neq 不等于 no equal lss 小于 less than leq 小于等于 leq less than or equal gtr 大于 greater than geq 大于等于 geq greater than or equal 其中,只有等于操作符可以使用符号 “==” 表示,其

    2024年02月03日
    浏览(51)
  • 使用批处理文件(.bat)启动多个CMD窗口并执行命令

    由于每次启动本机的kafka都需要打开2个cmd窗口,分别启动zookeeper服务和kafka服务,操作相对繁琐,于是想起了批处理来帮忙一键启动。 在桌面新建一个txt文件,改后缀名为.bat,并加上下面的代码。 代码结尾不加pause的原因是,执行完关闭窗口,因为不需要该窗口保留着,免得

    2024年02月16日
    浏览(47)
  • mybatis的<foreach>标签使用

    记录 :419 场景 :使用MyBatis的foreach/foreach标签的循环遍历List类型的入参。使用collection属性指定List,item指定List中存放的对象,separator指定分割符号,open指定开始字符,close指定结束字符。 版本 :JDK 1.8,Spring Boot 2.6.3,mybatis-3.5.9。 1.基础知识 1.1MyBatis的标签 (1)查看MyBatis支持的

    2023年04月24日
    浏览(38)
  • 深入解析 MyBatis 中的 <;foreach>; 标签:优雅处理批量操作与动态 SQL

    在当今的Java应用程序开发中,数据库操作是一个不可或缺的部分。MyBatis作为一款颇受欢迎的持久层框架,为我们提供了一种优雅而高效的方式来管理数据库操作。在MyBatis的众多特性中, foreach 标签无疑是一个强大的工具,它使得在SQL语句中进行动态循环迭代变得轻而易举。

    2024年02月13日
    浏览(44)
  • 批处理命令大全 | Windows批处理教程 - ChatGPT

    批处理以.bat或.cmd文件的形式存在,在Windows命令提示符下运行,也可以通过双击批处理文件来运行。批处理文件由一系列命令组成,可以按照顺序执行,也可以根据条件或循环控制选择性地执行。 在Windows上创建一个批处理文件非常简单,在编辑器中输入一系列命令并保存为

    2024年02月04日
    浏览(80)
  • redis批处理优化

    一个命令在网络传输的时间往往是远大于在redis中执行命令的时间的,如果每条命令都要逐条经历网络传输,耗时将会大大增加,我们不妨将命令多量少次的传输给redis,这样就大大减少了因为网络传输时间,大大提高的效率 2.1.单机模式下的批处理 2.2.集群模式下的批处理 这

    2024年01月19日
    浏览(42)
  • Windows批处理

    @ echo off :关闭命令的回显功能,这样在执行脚本时不会显示每条命令的具体执行过程。建议将此行放在批处理脚本的首行。 rem :用于添加注释,后面可以跟上注释内容。注释的作用是对脚本进行说明或提醒,不会被执行。 pause :暂停批处理的运行,直到用户按下任意键才

    2024年02月07日
    浏览(48)
  • BAT 批处理脚本教程

    第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处理命令。 小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程。 了解了大概意思后

    2024年02月02日
    浏览(47)
  • JDBC p4 批处理

    基本介绍: 当需要成批插入或者更新记录时。可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下比单独提交处理更有效率。 JDBC的批量处理语句包括下面方法: addBatch():添加需要批量处理的SQL语句或参数; executeBatch():执行批量

    2024年02月15日
    浏览(39)
  • 【bat】批处理脚本大全

    目录 1.概述 2.变量 3.运算符 3.2.重定向运算符 3.3.多命名运算符 3.4.管道运算符 4.命令 4.1.基本命令 4.2.参数传递 4.3.查看脚本内容 4.4.注释 4.5.日期和时间 4.6.启动脚本 4.7.调用其他bat 4.8.任务管理 4.8.1.任务列表查看 4.8.2.任务终止 4.9.文件夹 4.10.关机 4.11.环境变量 4.12.目录 4.12.1

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包