天天看點

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

繼續閱讀