公司网站制作步骤流程图,安阳网络科技有限公司,什么叫商业网站,网页传奇加速器一、问题背景
当若依框架遇到两次及以上的list查询时,会引发分页查询失效问题,如下图:
二、分析原因
分页查询原理 Mybatis的分页原理#xff0c;大致就是使用MyBatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 SQL,然后重写 SQL#xff0c;实现分页…一、问题背景
当若依框架遇到两次及以上的list查询时,会引发分页查询失效问题,如下图:
二、分析原因
分页查询原理 Mybatis的分页原理大致就是使用MyBatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 SQL,然后重写 SQL实现分页查询。
分析原因
若依框架中使用的是PageHelper分页对象进行分页查询: 当一次请求涉及到多个list查询时,第一次的list查询会把这个PageHelper分页对象消耗掉,因此后面的查询就无法实现分页查询进而直接查询所有数据. 当理解了分页原理以及产生上述问题的原因后,解决这个问题不过是信手拈来的事了,具体做法如下:
三、解决办法
抽离出若依框架的分页插件工具
/*** 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);}}
}在最后一次查询时,才开启分页查询 控制器调用: GetMapping(/list)ApiOperation(查询XXX产品列表)public TableDataInfo list(XXXProduct pro) {// startPage(); 在控制器中开启分页查询,会导致后续的分页查询失效,因此不能在控制器中开启分页查询ListXXXProduct list service.selectFinancialLeasingProductList(pro);return getDataTable(list);}具体实现: Overridepublic ListXXXProduct selectXXXProductList(XXXProduct product) {ListString organizeIds utilService.getCurrentUserOrganizeIds();//最后一次list查询时,才开启分页数据查询,防止分页实失效PageUtil.startPage();ListXXXProduct list mapper.selectXXXProductList(organizeIds,product);return list;}