天天看点

mybatis批量插入数据的两种方法一、在xml文件中拼sql的方法 二、使用ExecutorType.BATCH创建SqlSession

一、在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、结果

mybatis批量插入数据的两种方法一、在xml文件中拼sql的方法 二、使用ExecutorType.BATCH创建SqlSession

 二、使用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();
	}           
mybatis批量插入数据的两种方法一、在xml文件中拼sql的方法 二、使用ExecutorType.BATCH创建SqlSession

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

继续阅读