mybatis批量插入数据的两种方法

一、在xml文件中拼sql的方法

1、定义mapper接口

 /**
     * 批量插入用户信息
     * @param users
     */
    void insertBatch(@Param("users") List<UserInfo> users);

2、mybatis文件sql

<insert id="insertBatch">
        insert into t_user_info
        (
            name,
            age,
            sex,
            address,
            mobile,
            create_time,
            update_time
         )
         values 
         <foreach collection="users" item="user" separator=",">
        (
            #{user.name},
            #{user.age},
            #{user.sex},
            #{user.address},
            #{user.mobile},
            NOW(),
            NOW()
        )
         </foreach>
    </insert>

3、测试

      @Test
      public void insertBatchTest(){
          List<UserInfo> users = new ArrayList<UserInfo>();
          UserInfo u1 = new UserInfo();
          UserInfo u2 = new UserInfo();
          u1.setName("张三");
          u1.setAddress("上海");
          u1.setAge(24);
          u1.setMobile("13347882343");
          u1.setSex(0);
          u2.setName("李四");
          u2.setAddress("北京");
          u2.setAge(34);
          u2.setMobile("13347882345");
          u2.setSex(1);
          users.add(u1);
          users.add(u2);
          userInfoMapper.insertBatch(users);
      }

4、结果

 二、使用ExecutorType.BATCH创建SqlSession

 1、测试代码

    @Test
	public void test09(){
		SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
		IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);
		
		long begin=System.currentTimeMillis();
		for(int i=0;i<10000;i++){
			mapper.insert(new User(null,"赵敏"+i,i,"镇雄"+i,false));
		}
		long end=System.currentTimeMillis();
		System.out.println(end-begin);
		sqlSession.close();
	}

2、springboot 可以设置 mybatis.configuration.default-executor-type=batch

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wwwzhouzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值