mybatisplus 高效批量插入实例
时间: 2023-06-28 16:15:18 浏览: 109
下面是一个示例代码,演示如何使用 MyBatis-Plus 进行高效的批量插入:
```java
@Autowired
private UserMapper userMapper;
@Transactional
public void batchInsertUsers(List<User> userList) {
// 每批次插入的记录数
int batchSize = 1000;
// 计算需要插入的批次数
int batchCount = (userList.size() + batchSize - 1) / batchSize;
// 循环插入每个批次的数据
for (int i = 0; i < batchCount; i++) {
int startIndex = i * batchSize;
int endIndex = Math.min(startIndex + batchSize, userList.size());
List<User> batchList = userList.subList(startIndex, endIndex);
// 批量插入数据
userMapper.insertBatchSomeColumn(batchList);
}
}
```
上述代码中,`UserMapper` 是一个继承了 `com.baomidou.mybatisplus.core.mapper.BaseMapper` 接口的 Mapper 类,`User` 是一个继承了 `com.baomidou.mybatisplus.extension.activerecord.Model` 类的实体类。
在 `batchInsertUsers()` 方法中,我们首先定义了每批次插入的记录数 `batchSize`,然后根据总记录数计算需要插入的批次数 `batchCount`。接着,我们循环插入每个批次的数据,先计算出本批次的起始位置和结束位置,然后使用 `subList()` 方法截取出本批次的数据,并调用 `insertBatchSomeColumn()` 方法进行批量插入。需要注意的是,由于批量插入操作需要关闭自动提交,因此我们需要在方法上添加 `@Transactional` 注解,开启事务。
使用 MyBatis-Plus 进行批量插入操作,可以大大提高数据插入的效率。
阅读全文