PageHelper在RuoYI Cloud中的分页问题

381 阅读1分钟

话不多说直接上问题

controller:

@GetMapping("/list")
public TableDataInfo list(PmsAttrGroup pmsAttrGroup) {
    startPage();
    List<PmsAttrGroup> list = pmsAttrGroupAppService.selectPmsAttrGroupList(pmsAttrGroup);
    return getDataTable(list);
}

service:

    @Override
    public List<PmsAttrGroup> selectPmsAttrGroupList(PmsAttrGroup pmsAttrGroup) {

        return pmsAttrGroupMapper.selectList(null).stream().map(i -> {
                PmsCategory pmsCategory = pmsCategoryMapper.selectById(i.getCategoryId());
                i.setCategoryName(pmsCategory.getName());
                return i;
           }).collect(Collectors.toList());
        }
    }

上面的startPage是RuoYi帮我们封装好的一个方法,这里的问题就是说因为service里面的逻辑我无法分页了,接口返回值total属性永远是10,明显不符合分页效果

解决方法:不使用stream实现

  @Override
    public List<PmsAttrGroup> selectPmsAttrGroupList(PmsAttrGroup pmsAttrGroup) {
        List<PmsAttrGroup> groups = pmsAttrGroupMapper.selectList(null);
        for (PmsAttrGroup group : groups) {
            PmsCategory pmsCategory = pmsCategoryMapper.selectById(group.getCategoryId());
            group.setCategoryName(pmsCategory.getName());
        }
        return  groups;

    }

总结: 我这里很好奇为什么不能用stream,问了一圈无果,目前的解释是pageHelper使用的是ThreadLocal,而stream是多线程运行,导致缓存拿不到?如果有大佬也遇到过这个问题,欢迎留言讨论