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

2023-11-18

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

1、原因

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

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

Service层:

 /**
     * 根据条件分页查询用户列表
     * 
     * @param user 用户信息
     * @return 用户信息集合信息
     */
    @Override
    @DataScope(deptAlias = "d", userAlias = "u")
    public List<SysUser> 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<xx> 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<xx> selectxxList(xx xxOld,Integer pageNum,Integer pageSize) {
		List<Long> xxIds = new ArrayList<Long>();
    	List<Long> xxIdAll = new ArrayList<Long>();
		List<xx> xxAll = new ArrayList<xx>();
		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<Long> idlistWithoutDuplicates = null;
    	if(!xxIdAll.isEmpty()) {
    	//列表查重
	    	idlistWithoutDuplicates = removeDuplicate(achievementSelectionIdAll);
	    	//列表排序 
	    	Collections.sort(idlistWithoutDuplicates, new Comparator<Long>() {
	            @Override
	            public int compare(Long o1, Long o2) {
	                try {
	                    if (o1 > o2) {
	                        return -1;
	                    } else if (o1 < o2) {
	                        return 1;
	                    } else {
	                        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<Long> removeDuplicate(List<Long> list) {
    	for (int i = 0; i < list.size(); i++) { 
    	    for (int j = 0; j < list.size(); j++) { 
    	        if(i!=j&&list.get(i)==list.get(j)) { 
    	            list.remove(list.get(j)); 
    	        }
    	     } 
    	} 
        return list;
    }

步骤三:Mapper层写法:

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

<if test="list != null and list != ''">
        and achievement_id in
	<foreach item="xxId" collection="list" open="(" separator="," close=")">
  			#{xxId}
  		</foreach>
</if>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 计算机网络安全论文选题提纲,计算机网络安全毕业论文提纲

    计算机网络安全毕业论文提纲 想要写好一篇论文 首先需要一份提纲 理清思路 才能帮助你顺利的写好论文 那么 计算机网络安全毕业论文提纲又应该怎样写呢 下面是小编为大家整理的计算机网络安全毕业论文提纲 欢迎参考 题目 主标题 数据结构课程建设
  • 【软件工程】详细设计说明书

    详细设计说明书 1引言 1 1编写目的 说明编写这份详细设计说明书的目的 指出预期的读者 该文档实在概要设计的基础上 进一步的细化系统结构 展示了软件啊结构的图标 物理设计 数据结构设计 及算法设计 详细的介绍了系统各个模块是如何实现的 包
  • 【Go语言核心手册11】context.Context

    往期精选 欢迎转发 如何看待程序员35岁职业危机 Java全套学习资料 14W字 耗时半年整理 我肝了三个月 为你写出了GO核心手册 消息队列 从选型到原理 一文带你全部掌握 肝了一个月的ETCD 从Raft原理到实践 更多 11 1 内容
  • 仓储系统货位优化毕业论文【Flexsim仿真】

    一 内容简介 由堆垛机 货架 输送系统 管理系统 控制系统等组成的传统堆垛式仓储系统因为其成熟的技术和推广方式 高效等特点广泛的应用在物流 车间 制造等行业 但是堆垛机仓库每个巷道都会拥有一台堆垛机 其作业方式受到限制 鲁棒性比较差 一个巷
  • iOS 展示 gif

    gif 图 是多张依次有连续动作的图 顺时间展示的一种动态效果图 有的是均匀时间更换下一张 有的 则不是均匀时间变化 1 那么 对于均匀 时间变化的gif图 比较适合 使用 iOS 系统自带方法 imageView 的动态展示图片的方法就好
  • 30分钟掌握STL系列(三)

    30分钟掌握STL系列 三 使用迭代器编程 下面就讲一讲几种类型迭代器的编程 输入迭代器 输入迭代器是最普通的类型 输入迭代器至少能够使用 和 等 使用 来访问数据 使用 操作来递进迭代器到下一个元素或到达past the end值 为了理
  • 借助Linux中断机制的按键开关功能实现

    AlienTek的IMX6ULL开发板自带了一个按键和一个LED灯 这两个外设分别接在两个不同的GPIO端口 各自独立 我们想把按键作为灯的开关 通过按压按键来控制灯的亮灭 即灯亮时按一下则灯灭 灯灭时按一下则灯亮 这里的 按一下 是指按键
  • Vmware下Ubuntu18.04虚拟机右上角的网络图标消失连不上网络,找回方法。

    一 重新找回图标 先执行以下三段代码 在终端 Terminal 下输入 sudo service network manager stop sudo rm var lib NetworkManager NetworkManager stat
  • pandas选取数据方法

    pandas选取数据 首先创建一个3行3列的DataFrame data pd DataFrame 1 2 3 4 5 6 7 8 9 index a b c columns d e f 数据展示如下 1 按列选取数据 按照列名选取 返回一
  • 网络编程——软件架构、osi七层、TCP/UDP协议

    文章目录 一 网络编程是什么 二 软件架构 1 c s架构 2 b s架构 三 OSI七层 1 物理层 2 链路层 3 网络层 4 传输层 5 应用层 四 TCP UDP协议 1 TCP 2 UDP协议 一 网络编程是什么 一个完整计算机系
  • 解决ECharts 因X轴数据过多导致重叠显示不全的问题

    X轴 加滚动条 通过配置合适的起始位置和结束位置可以做到数据过多不重叠 数据太少也不至于很丑 定位合适的位置后还可以通过手动拉伸滚动条的长度动态的显示不同条目数 对于动态的条目数滚动条要比倾斜数据灵活太多尤其是根据时间段动态显示数据 仅此表
  • Sql中having和where的区别

    HAVING 关键字和 WHERE 关键字都可以用来过滤数据 且 HAVING 支持 WHERE 关键字中所有的操作符和语法 但是他们实现同样的功能时where效率更高 WHERE 和 HAVING 关键字存在以下几点差异 1 一般情况下
  • P8254 [NOI Online 2022 入门组] 王国比赛(二维数组巧解)

    include
  • vue pdf 预览下载功能 vue-pdf

    开发新项目的时候遇到了合同的预览下载功能 之前没有做过 实现之后记录一下 方便以后查阅 1 下载 vue pdf 插件 npm install save vue pdf 或者 cnpm install save vue pdf 2 所需页面
  • [Cover] 通过与配置管理工具链接有效使用覆盖率

    变更覆盖率的必要性 Cover的主要功能 变更覆盖率 测量代码覆盖率 以下称为覆盖率 是为了提高正在开发的软件的质量并执行高质量的测试 如果开发人员直接测试正在开发的源代码 可以更容易地增加覆盖率 但是 如果正在开发的软件被新的开发人员接管
  • java 连接redis_Redis 的监控指标有哪些?别说你不知道!

    Java技术栈 www javastack cn 关注阅读更多优质文章 来源 https blog 51cto com yht1990 2503819 监控指标 性能指标 Performance 内存指标 Memory 基本活动指标 Bas
  • 解决git@github.com: Permission denied (publickey)

    打开文件夹C Users Administrator ssh Administrator是当前用户名 在空白处点鼠标右键选择 Git Bush Here 打开gitbush 1 首先 如果你没有ssh key的话 输入命令 ssh keyg
  • 【EasyExcel】填充数据 jsonArray转换报错

    EasyExcel填充数据报Can not find Converter support class JSONArray 项目场景 公司部分业务需要使用到填充Excel操作 为了方便日后可灵活使用 因此将其写在组件库中 所以在修复问题时不能
  • HTML 框架iframe

    通过使用iframe框架 我们可以在一个浏览器窗口浏览多个页面 iframe语法 该URL指向不同的网页 1 Iframe 设置高度与宽度 height 和 width 属性用来定义iframe标签的高度与宽度 属性默认以像素为单位 但是你
  • 若依框架列表分页功能失效的原因及避坑大法

    问题 在使用若依框架的过程中 列表分页失效 只能显示十条数据 没有分页工具 十条之外的数据只能通过列表的显示行数来控制显示 1 原因 分页工具只能在数据查询出来不做任何处理的情况下使用 因为这个时候列表的总数是固定的 分页的参数可控 以若依