Java后端爱上SpringBoot 第五节:Spring-Data-JPA批量提交
PS:因为项目中用到了批量提交,因此来记录一下几种批量提交的方式。
Spring-Data-JPA批量提交
随便找一个实体的Repository来进行提交:
贴一下单元测试类:
@Test
public void test9() {
Optional<SysUser> optional = iSysUserRepository.findById("2c987c3167a23e990167a240e0c80008");
Long startTime=System.currentTimeMillis();
if (optional.isPresent()) {
List<SysUser> sysUsers = new ArrayList<>(10000);
// 提交1W個
for (int i = 0; i < 10000; i++) {
SysUser sysUser = new SysUser();
sysUser=optional.get();
sysUser.setId(String.valueOf(i));
sysUsers.add(sysUser);
}
iSysUserRepository.saveAll(sysUsers);
}
Long endTime=System.currentTimeMillis();
System.out.println("耗时:"+(endTime-startTime)+"ms");
}
提交时间为:
又测了一次:
好慢啊!看一下saveAll()这个方法的源码。
于是我们找到了org.springframework.data.jpa.repository.support.SimpleJpaRepository<T, ID>的saveAll方法。
@Transactional
public <S extends T> List<S> saveAll