由于mybatis-plus项目提供的批量插入方式的底层实现实际上在内部做循环单条插入,这就导致在大批次数据插入时
的效率非常差,所以本项目是对mybatis-plus的批量插入方式做增强。
-
优点
能够实现Mysql批量插入语法 -
缺点
只支持Mysql语法的批量插入方式。
-
引入依赖
<dependency> <groupId>io.github.timoyung</groupId> <artifactId>mybatis-plus-batch-core</artifactId> <version>Latest Version</version> </dependency>
-
业务层继承BatchServiceImpl类
public interface UserService extends IBatchService<User> { } @Service public class UserServiceImpl extends BatchServiceImpl<UserMapper, User> implements UserService { }
-
使用批量插入方法(默认模板)
User user1 = new User(); user1.setName("张三"); user1.setAge(18); User user2 = new User(); user2.setName("李四"); user2.setAge(88); //使用默认的批量插入条数:1000条/次 this.userService.insertBatch(Arrays.asList(user1, user2)); //指定批量插入条数 this.userService.insertBatch(Arrays.asList(user1, user2), 500);
-
使用批量插入方法(指定模板)
User template = new User(); template.setName("AA"); template.setAge(20); template.setNickName("小A") User user1 = new User(); user1.setName("张三"); user1.setAge(18); user1.setNickName("小张") User user2 = new User(); user2.setName("李四"); user2.setAge(88); //使用默认的批量插入条数:1000条/次 this.userService.insertBatchWithTemplate(Arrays.asList(user1, user2), template); //指定批量插入条数 this.userService.insertBatchWithTemplate(Arrays.asList(user1, user2), template, 500);
项目中绝大部代码是mybatis-plus项目中直接拿过来做的修改