1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| @Slf4j @SpringBootTest class JdbcTemplateManagerTest { @Autowired JdbcTemplateManager jdbcTemplateManager; @Autowired JdbcTemplate jdbcTemplate; @Autowired PersonMapper personMapper; @Autowired PersonRepo personRepo; @Test void addPersons() { int n = 99; List<Object[]> list = IntStream.rangeClosed(0, n).mapToObj(i -> new Object[]{"name", i + 10, "hubei" + i, i / 2 == 0 ? "唱跳rap" : "篮球"}).collect(Collectors.toList()); List<Person> jdbcList = IntStream.rangeClosed(0, n).mapToObj(i -> new Person().setName("jdbcTemplate").setAge(i + 10).setAddress("hubei" + i).setGoodAt(i / 2 == 0 ? "唱跳rap" : "篮球")).collect(Collectors.toList()); List<Person> jdbcList2 = IntStream.rangeClosed(0, n).mapToObj(i -> new Person().setName("jdbcTemplate2").setAge(i + 10).setAddress("hubei" + i).setGoodAt(i / 2 == 0 ? "唱跳rap" : "篮球")).collect(Collectors.toList()); List<Person> mbpList = IntStream.rangeClosed(0, n).mapToObj(i -> new Person().setName("mbp").setAge(i + 10).setAddress("hubei" + i).setGoodAt(i / 2 == 0 ? "唱跳rap" : "篮球")).collect(Collectors.toList()); jdbcTemplate.execute("truncate table person"); StopWatch watch = new StopWatch();
watch.start("jdbcTemplate batch1"); int[] ints = jdbcTemplateManager.addPersons(list); watch.stop();
watch.start("jdbcTemplate batch2"); int[][] ints2 = jdbcTemplateManager.addPersons2(jdbcList); watch.stop();
watch.start("jpa saveAllAndFlush"); List<Person> flush = personRepo.saveAllAndFlush(jdbcList2); watch.stop();
watch.start("mybatisPlus batch"); Integer batchSomeColumn = personMapper.insertBatchSomeColumn(mbpList); watch.stop();
System.out.println(watch.prettyPrint()); } }
@Service @RequiredArgsConstructor public class JdbcTemplateManager { private final JdbcTemplate jdbcTemplate;
public int[] addPersons(List<Object[]> args) { return jdbcTemplate.batchUpdate("insert into person (name,age,address,goodAt) values (?,?,?,?)", args); }
public int[][] addPersons2(List<Person> personList) { return jdbcTemplate.batchUpdate("insert into person (name,age,address,goodAt) values (?,?,?,?)", personList, 50, (ps, p) -> { ps.setString(1, p.getName()); ps.setInt(2, p.getAge()); ps.setString(3, p.getAddress()); ps.setString(4, p.getGoodAt()); }); } }
@Table(name = "person") @Entity(name = "person") @Data @TableName("person") public class Person extends BaseEntity { private String name; private Integer age; private String address; private String goodAt;
}
|