若依框架列表分页功能失效的原因及避坑大法

您所在的位置:网站首页 框架协议会不会失效 若依框架列表分页功能失效的原因及避坑大法

若依框架列表分页功能失效的原因及避坑大法

2024-03-28 06:09| 来源: 网络整理| 查看: 265

问题:在使用若依框架的过程中,列表分页失效,只能显示十条数据,没有分页工具,十条之外的数据只能通过列表的显示行数来控制显示

1、原因

分页工具只能在数据查询出来不做任何处理的情况下使用,因为这个时候列表的总数是固定的,分页的参数可控。以若依自己的代码为例: Controller层:

@RequiresPermissions("system:user:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(SysUser user) { startPage(); List list = userService.selectUserList(user); return getDataTable(list); }

Service层:

/** * 根据条件分页查询用户列表 * * @param user 用户信息 * @return 用户信息集合信息 */ @Override @DataScope(deptAlias = "d", userAlias = "u") public List selectUserList(SysUser user) { return userMapper.selectUserList(user); }

数据在被查询出来之后直接分页,分页功能妥妥地好用! 如果碰到查询数据再次附加查询数据的情况,就没法进行列表的分页。

2、解决方法

碰到数据需要处理的情况,只有一种办法就是在service层逻辑的最后一句,将所有的数据都查出来下面说一下具体解决办法:

步骤一:在新建controller里面继承若依自带的BaseController 步骤二:Contorller层写法

加入startPage()和getDataTable():

/** * 查询xx列表 */ @RequiresPermissions("xx:xx:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(xx xx, Integer pageNum,Integer pageSize) { startPage(); List list = xxService.selectxxList(xx,pageNum,pageSize); return getDataTable(list); } 步骤三:Service层写法

在查询所有数据的语句之前加一句:

if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) { PageHelper.startPage(pageNum, pageSize); }

以下是代码逻辑:查出所有符合要求的id,用id集合一起查询列表数据

@Override public List selectxxList(xx xxOld,Integer pageNum,Integer pageSize) { List xxIds = new ArrayList(); List xxIdAll = new ArrayList(); List xxAll = new ArrayList(); xx xx = new xx(); xx.setzz("3"); achievementSelectionIds = xxMapper.xxIds(xx); xxIdAll.addAll(xxIds); xx.setzz("1"); xxIds = xxMapper.xxIds(xx); xxIdAll.addAll(xxIds); List idlistWithoutDuplicates = null; if(!xxIdAll.isEmpty()) { //列表查重 idlistWithoutDuplicates = removeDuplicate(achievementSelectionIdAll); //列表排序 Collections.sort(idlistWithoutDuplicates, new Comparator() { @Override public int compare(Long o1, Long o2) { try { if (o1 > o2) { return -1; } else if (o1 return 0; } } catch (Exception e) { e.printStackTrace(); } return 0; } }); } if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) { PageHelper.startPage(pageNum, pageSize); } xxAll = achievementSelectionMapper.xxSelections(xxOld, idlistWithoutDuplicates); return xxAll; } private static List removeDuplicate(List list) { for (int i = 0; i if(i!=j&&list.get(i)==list.get(j)) { list.remove(list.get(j)); } } } return list; } 步骤三:Mapper层写法:

注意:这是遍历所有id的写法

and achievement_id in #{xxId}


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3