Mybatis批量插入

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

使用Mybatis框架批量插入的3种方法:多次调用insert方法、foreach标签、batch模式

一、 多次调用insert方法

	每插入一条数据都调用一次insert方法,这种方法适用于数据量小时使用,频繁使用会浪费数据库资源。

二、 foreach标签

	一次存入多条数据,使用方法如下:
	<insert id="insert1" keyColumn="goods_id" keyProperty="goodsId" parameterType="com.shop.test.pojo.entity.test"
            useGeneratedKeys="true">
        	insert into test (shop_id, test_type_id,)
       		 values
        	<foreach collection="record" item="item" separator="," >
            	(#{item.shopId,jdbcType=BIGINT}, #{item.goodsTypeId,jdbcType=BIGINT})
        	</foreach>
    </insert>`

三、 batch模式

	一次存入多条数据,使用方法如下:
	xml代码:
	<insert id="insert" keyColumn="goods_id" keyProperty="goodsId" parameterType="com.shop.test.pojo.entity.test"
            useGeneratedKeys="true">
        insert into test (shop_id, test_type_id)
        values 
        (#{shopId,jdbcType=BIGINT}, #{goodsTypeId,jdbcType=BIGINT})
    </insert>

后端java代码:文章来源地址https://www.toymoban.com/news/detail-524582.html

//先引入
 @Resource
 private SqlSessionFactory sqlSessionFactory;
 //具体实现
SqlSession sqlSession=sqlSessionFactory.openSession(ExecutorType.BATCH);
        List<test> insertlist=new ArrayList<>();
        test test1=new test((long)1,(long)12);
        for(int i=0;i<100000;i++){
            insertlist.add(test1);
        }
        try{
            Long mm=System.currentTimeMillis();
            TestDao mapper=sqlSession.getMapper(TestDao.class);
            insertlist.stream().forEach(e->{
                mapper.insert(e);
            });
            sqlSession.clearCache();
            sqlSession.commit();
        }catch(Exception e){
            System.out.println(e);
        }finally{
            sqlSession.close();
        }

四、三种方法比较

	1)insert
		适用于少量数据插入,每次使用都要调用数据库连接,频繁使用会浪费资源,效率低
	2)foreach标签
		使用foreach可以减少数据库连接的调用,效率比inser高
	3)batch模式
		当数据特别多时效率比foreach标签高

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

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

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

相关文章

  • MyBatis批量插入数据优化,增加一个参数,效率提升百倍

    项目中进行接口压测,发现批量插入的速度有点超出预期,感觉很奇怪,经过定位后发现mybatise-plus批量保存的处理十分缓慢,使用的是saveBatch方法,这点有点想不通。于是就进行了相关内容分析。 根据mybatise-plus中saveBatch的方法进行源码查看:   继续跟踪逻辑,从代码上看,

    2024年02月15日
    浏览(45)
  • SpringBoot+MyBatis批量插入数据的三种方式

    最近导入表格数据时需要同时插入修改大量数据,研究了一下有三种实现方式 1、用for循环调用sql插入数据 这种方式插入大量数据时,效率非常底下,不推荐 2、利用mybatis的foreach来实现循环插入 这种方式插入大量数据时,好处是不用频繁访问数据库,一条sql搞定,效率比较

    2024年02月16日
    浏览(42)
  • Java EE 突击 13 - MyBatis 查询数据库(2)

    这个专栏给大家介绍一下 Java 家族的核心产品 - SSM 框架 JavaEE 进阶专栏 Java 语言能走到现在 , 仍然屹立不衰的原因 , 有一部分就是因为 SSM 框架的存在 接下来 , 博主会带大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相关知识点 并且带领大家进行环境的配置 , 让大家真正用好

    2024年02月11日
    浏览(51)
  • mybatis批量插入数据list超过一定长度时报错的解决办法(批量插入数据,数据过多时报错解决和批量修改报错

    在使用MyBatis进行批量新增时,如果数据量较大,可以考虑分批次插入以减少数据库的负载压力。这里提供一种基于MyBatis的分批次插入的方法: 创建一个新的Mapper XML文件(例如:BatchInsertMapper.xml)来定义批量插入的SQL语句。在该XML文件中,添加如下内容:   请将上述代码中

    2024年02月16日
    浏览(51)
  • mybatis批量插入数据导致系统OOM,微服务内存爆了

    今天我们来说说工作中遇到的一个真实案例,由于使用mybatis的批量插入功能,导致系统内存溢出OOM(Out Of Memory), \\\"java.lang.OutOfMemoryError: Java heap space\\\"的报错,导致服务出现短暂的服务不可用,大概一两分钟不可用。这其实是个非常危险的故障,可能在高峰期导致整个系统瘫

    2024年02月01日
    浏览(48)
  • MyBatis实现 Java 对象和数据库中日期类型之间的转换(超详细)

    数据库存储的时间字段的类型是datetime Java实体类的时间字段类型是Date 需求:响应前端的时间字段格式为”yyyy-MM-dd HH:mm:ss“ 1、定义resultMap 定义 Java 对象和数据库表字段的对应关系,在 mapper.xml 文件中使用 #{属性名,jdbcType=数据库字段类型} 来进行参数传递和结果集映射,例如

    2024年02月15日
    浏览(44)
  • 【Java】Mybatis查询数据库返回JSON格式的字段映射到实体类属性

    今天遇到了一个bug,大概就是数据库(Mysql)中有一个 type 类型字段,数据类型为json,大概是这样的:[“苹果”,“香蕉”,“葡萄”]的数据格式,这个bug的问题所在呢就是查询后这个json格式的数据无法映射到我们实体类的属性上,解决方案如下: 实体类的配置: @TableField

    2024年02月15日
    浏览(48)
  • MyBatis实现 Java 实体类和数据库中日期类型之间的转换(超详细)

    数据库存储的时间字段的类型是datetime Java实体类的时间字段类型是Date 需求:响应前端的时间字段格式为”yyyy-MM-dd HH:mm:ss“ 1、定义resultMap 定义 Java 对象和数据库表字段的对应关系,在 mapper.xml 文件中使用 #{属性名,jdbcType=数据库字段类型} 来进行参数传递和结果集映射,例如

    2024年02月20日
    浏览(54)
  • 【数据库】Python脚本实现数据库批量插入事务

    在工作中可能会遇到需要批量插入的场景, 而批量插入的过程具有 耗时长 的特点, 再此过程很容易出现程序崩溃的情况.为了解决插入大量数据插入后崩溃导致 已插入数据无法清理 及 未插入数据无法筛出 的问题, 需要编写一个脚本记录已插入和未插入的数据, 并可以根据记录

    2024年02月08日
    浏览(49)
  • Mybatis批量插入、修改

            在 MyBatis 中, foreach 标签用于遍历集合类型的条件,并且可以将多个参数值拼接成为 SQL 语句的一个部分,通常被用于批量插入或更新等操作。  foreach属性及介绍          属性 介绍 collection 集合名称 item 字符别名 index 索引别名 open 循环前缀 close 循环后缀 separato

    2024年02月07日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包