SpringBoot整合Mybatis批量插入+mysql重置id

做微服务项目的时候,需要大量的虚假信息,所以想到了批量插入,但是之前只学过mybatis的批量插入,还没有试过springboot整合的批量插入,所以今天试了试

首先在mapper.xml里面写sql

  <!--准备数据-->
  <insert id="insertUserList">
    insert into user (id,user_account, user_account_crc32,
    user_password, user_other)
    values
    <foreach collection="list" item="user" index="index" separator=",">
      (#{user.id},#{user.userAccount}, CRC32(#{user.userAccountCrc32}),#{user.userPassword}, #{user.userOther})
    </foreach>
  </insert>

然后定义了一个方法批量插入

public void readyData(){
        List<User> list=new ArrayList<>();
        for(int i=0;i<10000;i++){
            User user=new User();
            String s=String.valueOf(10000+i);
            user.setId(100+i);
            user.setUserAccount(s);
            user.setUserAccountCrc32(s);
            user.setUserPassword(s);
            list.add(user);
        }
        System.out.println("开始插入");
        Long startTime=System.currentTimeMillis();
        userMapper.insertUserList(list);
        System.out.println((System.currentTimeMillis()-startTime));
    }

 运行完以后确实比一条一条插入快了很多倍,1w条数据1k毫秒,刚刚查了查,一直记得batch批量插入是最快的,但是不知道快多少,刚刚研究了研究,总结了几种方法的速度

 

看到测试结果,并不是像网上说的那样,使用batch,性能比for循环一条一条插入快不到哪里去,

单纯的foreach拼装sql语句有大小限制。

batch可以解决sql语句大小限制的问题,但是相应的batch也有自己的缺点

===============================================================

补充一下,在测试批量插入数据库数据的时候,需要将mysqlid重置,下面分享一下具体的重置方法,mysql数据太多,如果删除以后,id还是从最后一位开始加,但是正常测试数据的时候,想要的效果是删除了id1,再次插入的时候还是id1,这个时候应该这样删除

 

 这样删除后的user表数据,再次插入的时候,id是从1开始计算的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值