解决若依框架多次list查询时,分页失效问题

news2024/11/19 15:15:49

一、问题背景

当若依框架遇到两次及以上的list查询时,会引发分页查询失效问题,如下图:
在这里插入图片描述

二、分析原因

分页查询原理

       Mybatis的分页原理,大致就是使用MyBatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 SQL,然后重写 SQL,实现分页查询。

分析原因

若依框架中,使用的是PageHelper分页对象进行分页查询:
       当一次请求涉及到多个list查询时,第一次的list查询会把这个PageHelper分页对象消耗掉,因此后面的查询就无法实现分页查询进而直接查询所有数据.
       当理解了分页原理以及产生上述问题的原因后,解决这个问题不过是信手拈来的事了,具体做法如下:

三、解决办法

  1. 抽离出若依框架的分页插件工具
/**
 * FileName: PageUtil
 * Date:     2023.9.23 17:00
 * Description: 分页工具---解决若依框架多次list查询时,分页失效问题
 */
package com.ncjr.common.core.page;

import com.github.pagehelper.PageHelper;
import com.ncjr.common.utils.StringUtils;
import com.ncjr.common.utils.sql.SqlUtil;

/**
 * 分页工具---解决若依框架多次list查询时,分页失效问题
 * @author WuXingZheng
 * @date 2023.9.23
 * @version 1.0.0
 */
public class PageUtil {
    public static void startPage()
    {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
        {
            String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
            PageHelper.startPage(pageNum, pageSize, orderBy);
        }
    }
}
  1. 在最后一次查询时,才开启分页查询
    控制器调用:
 @GetMapping("/list")
    @ApiOperation("查询XXX产品列表")
    public TableDataInfo list(XXXProduct pro) {
        // startPage();  在控制器中开启分页查询,会导致后续的分页查询失效,因此不能在控制器中开启分页查询
        List<XXXProduct> list =
                service.selectFinancialLeasingProductList(pro);
        return getDataTable(list);
    }

具体实现:

  @Override
    public List<XXXProduct> selectXXXProductList(XXXProduct product) {
        List<String> organizeIds = utilService.getCurrentUserOrganizeIds();
        //最后一次list查询时,才开启分页数据查询,防止分页实失效
        PageUtil.startPage();
        
        List<XXXProduct> list = mapper.selectXXXProductList(organizeIds,
                product);
        return list;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066001.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生命不息,分享不止,5款小巧的免费软件

​ 今天继续分享5个超实用的小工具&#xff0c;都是非常小巧精致的免费软件。 1.3D渲染和动画——Luxion KeyShot ​ Luxion KeyShot是一款专业的3D渲染和动画软件&#xff0c;它可以快速地创建逼真的视觉效果。KeyShot支持多种3D格式&#xff0c;可以导入任何模型&#xff0…

【版本控制工具一】Git 安装注册及使用

文章目录 一、Git 、Github、Gitee1.1 概述1.2 码云 相对于 github 的优势 二、Github 或 Gitee注册2.1 注册2.2 创建仓库 三、Git下载与安装四、创建本地仓库 一、Git 、Github、Gitee 1.1 概述 Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或…

大数据软件项目开发流程

大数据软件项目的开发流程通常包括多个阶段&#xff0c;从项目规划和需求分析到开发、测试、部署和维护。以下是一般的大数据软件项目开发流程&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.项目规…

富瑞创新加杠杆平台可靠吗?如何正确评价?

关于富瑞创新加杠杆平台的可靠性&#xff0c;我们需要从多个方面进行评价和分析&#xff0c;包括公司背景、平台服务、风控措施、投资收益等。 首先&#xff0c;富瑞创新加杠杆平台是由富瑞创新投资控股有限公司运营&#xff0c;公司成立于2006年&#xff0c;是一家经过中国证…

8.绘制旗帜(TRIANGLE_FAN)

愿你出走半生,归来仍是少年 通过TRIANGLE_FAN和四个点绘制出旗帜。 1.知识点 1.1.TRIANGLE_FAN 一系列三角形组成的类似于扇形的图形。第二个三角形是由上一个三角形最后一条表和当前点组成。 2.代码 <script setup lang"ts">import { onMounted, …

【C++】指针与引用(学习笔记)

一、左值与右值 左值&#xff1a;编译器为其单独分配了一块存储空间&#xff0c;可以取其地址的&#xff0c;可以放在赋值运算符左边 右值&#xff1a;数据本身。不能取到其自身地址&#xff0c;只能赋值运算右边 左值最常见的情况如西数和数据成员的名字 右值是没有标识符、…

如何轻松使用 ChatGPT 进行论文大纲和创作

ChatGPT能够编写复杂的代码、博客文章等&#xff0c;它可以帮助我们做很多事情。今天本篇文章分享的主要内容如何利用 ChatGPT 来撰写论文文章。下面会介绍如何轻松使用 ChatGPT 进行论文大纲和创作&#xff01; 1、使用 ChatGPT 确定主题 文章非常重要的一个部分就是主题。如…

Bark Ai 文本转语音 模型缓存位置修改

默认缓存位置在&#xff1a;~/.cache 加入环境变量&#xff1a;XDG_CACHE_HOME&#xff0c;指定缓存位置 修改后新的位置为&#xff1a; D:\Ai\Bark\Bark Cache

如何使用 API 接口获取商品数据,从申请 API 接口、使用 API 接口到实际应用

在当今的数字化时代&#xff0c;应用程序接口&#xff08;API&#xff09;已经成为数据获取的重要通道。API 接口使得不同的应用程序能够方便地进行数据交换&#xff0c;从而促进了信息的广泛传播和利用。在众多的数据源中&#xff0c;商品数据是一个非常重要的领域&#xff0c…

大数据软件项目的验收流程

大数据软件项目的验收流程是确保项目交付符合预期需求和质量标准的关键步骤。以下是一般的大数据软件项目验收流程&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.项目验收计划制定&#xff1a; 在…

水库安全监测方案(实时数据采集、高速数据传输)

​ 一、引言 水库的安全监测对于防止水灾和保障人民生命财产安全至关重要。为了提高水库安全监测的效率和准确性&#xff0c;本文将介绍一种使用星创易联DTU200和SG800 5g工业路由器部署的水库安全监测方案。 二、方案概述 本方案主要通过使用星创易联DTU200和SG800 5g工业路…

mac m1打开word或excel显示VB运行时错误53,怎么解决这个问题,亲测有效!

mac m1打开word或excel或ppt时显示VB运行时错误53,每次都要点击多次,才能结束,用起来非常不方便,很麻烦,那么怎么解决这个问题呢,为大家献上,亲测有效! 如上图 非常简单 选择工具 找到模板加载项 如下图 点进去哈 接下来进入到以下画面

5.绘制多点

愿你出走半生,归来仍是少年&#xff01; 前面几个案例通过TS传入点参数实现绘制&#xff0c;但是每次的绘制都是单独绘制一个点&#xff0c;未实现一次绘制多个点的效果。该案例通过GL的Buffer实现一次绘制多点。 1.知识点 1.1.缓冲区绘制流程 通过缓冲区对象处理数据时&…

三相交流电压控制器供电的三相异步电动机定子电压控制研究(Simulink仿真实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

统计教程|PASS实现单因素二元Logistic回归分析且自变量为二分类的优势比检验的样本量估计

在对临床数据的探索分析工作中&#xff0c;我们经常会使用Logistic回归分析去探索影响疾病的发生、发展的重要影响因素&#xff0c;或应用Logistic回归模型进行相关的预测分析。但是在进行Logistic回归分析时&#xff0c;样本含量的估计常常是令临床科研工作者最头痛的一件事了…

百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览

1. 预测部署简介与总览 本章主要介绍PP-OCRv2系统的高性能推理方法、服务化部署方法以及端侧部署方法。通过本章的学习&#xff0c;您可以学习到&#xff1a; 根据不同的场景挑选合适的预测部署方法PP-OCRv2系列模型在不同场景下的推理方法Paddle Inference、Paddle Serving、…

服务器数据恢复-V7000存储2块磁盘故障脱机的数据恢复案例

服务器数据恢复环境&#xff1a; P740AIXSybaseV7000存储&#xff0c;存储阵列柜上共12块SAS机械硬盘&#xff08;其中一块为热备盘&#xff09;。 服务器故障&#xff1a; 存储阵列柜中有磁盘出现故障&#xff0c;工作人员发现后更换磁盘&#xff0c;新更换的磁盘数据同步到40…

聚观早报 | 问界新 M7 车型破单日大定纪录;iQOO 12影像大升级

【聚观365】10月7日消息 问界新 M7 车型破单日大定纪录 iQOO 12影像大升级 三星Galaxy S23 FE发布 欧拉好猫在墨西哥上市 1-8月我国智能手机产量6.79亿台 问界新 M7 车型破单日大定纪录 据问界官方消息&#xff0c;AITO 问界汽车的新 M7 车型在中秋国庆长假期间又刷新了自…

读书笔记——《三国演义》

前言 提起《三国演义》似乎每个人都可以说几个其中的人物、情节&#xff0c;但是你真的看过《三国演义》原著吗&#xff1f; 本身很喜欢三国题材游戏&#xff0c;一些游戏比如《霸王大陆》《全战三国》等等都是我的最爱&#xff0c;很喜欢收集名将大杀四方的感觉。但是回想起…

使用 Bun 快速搭建一个 http 服务

前端运行时 Bun 1.0 正式发布&#xff0c;如今&#xff0c;Bun 已经稳定并且适用于生产环境。Bun 不仅是一个专注性能与开发者体验的全新 JavaScript 运行时&#xff0c;还是一个快速的、全能的工具包&#xff0c;可用于运行、构建、测试和调试 JavaScript 和 TypeScript 代码&…