一、思路
通过分页查询数据,然后再将分页查询的结果批量进行保存,防止一次性查询数据过大,导致内存溢出。
二、实现
@Service
public abstract class InsertUserListService implements IService<Users> {
@Resource
private UsersMapper usersMapper;
/**
* 通过分页查询数据,然后再将分页查询的结果批量进行保存
* 防止一次性查询数据过大,导致内存溢出
*/
public void insertUserList() {
//分页参数
Page<Users> rowPage = new Page<>(1, 3);
long totalPages;
do {
//queryWrapper组装查询where条件
LambdaQueryWrapper<Users> queryWrapper = new LambdaQueryWrapper<>();
Page<Users> usersPage = usersMapper.selectPage(rowPage, queryWrapper);
if (usersPage == null || usersPage.getRecords() == null) {
break;
}
this.saveBatch(usersPage.getRecords());
totalPages = rowPage.getTotal();
rowPage.setCurrent(rowPage.getCurrent() + 1);
} while (rowPage.getCurrent() <= totalPages);
}
}
三、项目结果及源码
欢迎strar demo-springboot-mybatisplus