MybatisPlus 分批次批量删除数据
MybatisPlus 本身没有这个功能
基于分页实现
private static final int BATCH_SIZE = 1000;
LambdaQueryWrapper<Record> query = new LambdaQueryWrapper<Record>();
Page<Record> page = new Page<>(1, BATCH_SIZE);
int total = recordMapper.selectCount(query);
int pages = (int) Math.ceil((double) total / BATCH_SIZE);
for (int i = 1; i <= pages; i++) {
page.setCurrent(i);
List<Record> records = recordMapper.selectPage(page, query).getRecords();
// 对这一批数据进行删除操作
if (!records.isEmpty()) {
// 获取所有ids
List<Long> ids = records.stream().map(Record::getId).collect(Collectors.toList());
recordMapper.deleteBatchIds(ids);
log.info("deleteBatchIds 已删除:{} 条数据",ids.size());
}
}