//模型定义
public class DTO {
private int pageNum = 1;
private int pageSize = 10;
//请求方式 1 单次请求 2 递归调用,默认单次调用
private Integer requestWay = 1;
private List<Integer> idList = Lists.newArrayList();
private Integer id;
}
private Integer getPageNum(ActivityGoodsRefreshDTO dto) {
//递归调用
if (dto.getRequestWay() == 2) {
return 1;
}
return dto.getPageNum();
}
//查数据库中goodsName为null的,递归调用。
private void doRefresh(IPage<PO> page, LambdaQueryChainWrapper<PO> wrapper, DTO request) {
List<PO> list = page.getRecords();
if (CollectionUtils.isEmpty(list)) {
return;
}
//请求接口的结果集
Map<Long, Result> map=new HashMap<>();
list.forEach(x -> {
Result dto = map.get(x.getId());
//查不到设置空字符串,避免一直循环
String s = Optional.ofNullable(dto).map(Result::getGoodsName).orElse("");
x.setGoodsName(s);
});
mallCategoryGoodsPOS.forEach(x -> mallCategoryGoodsMapper.updateById(x));
Integer requestWay = request.getRequestWay();
if (requestWay == 2) {
page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(getPageNum(request), getPageSize(request));
wrapper.page(page);
doRefresh(page, wrapper, request);
}
//具体调用
IPage<PO> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(getPageNum(dto), getPageSize(dto));
wrapper.page(page);
doRefresh(page, wrapper, dto);
}
递归刷数据简单实现
于 2023-03-22 11:35:23 首次发布