递归刷数据简单实现

本文介绍了如何在Java后端使用MyBatis进行递归查询,通过Spring框架整合,实现数据的层级遍历。通过实例展示了在实际项目中处理层级关系数据的有效方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//模型定义
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);







}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值