我的编程空间,编程开发者的网络收藏夹
学习永远不晚

若依框架---PageHelper分页(一)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

若依框架---PageHelper分页(一)

我们简单阐述了若依系统中的分页架构,若依系统中的后端分页主要代码接口的三个特点:

  1. 返回值类型为TableDataInfo
  2. 接口第一行代码startPage()
  3. 接口最后一句:getDataTable(list)

 获取分页参数

我们已经看到了TableDataInfo的数据结构,就是一个分页的数据结构,有total,有rows数据。

今天我们来看看startPage()时执行了什么逻辑。startPage方法位于基类BaseController中。

 代码如下:

    protected 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());            Boolean reasonable = pageDomain.getReasonable();            PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);        }    }

我们逐行来分析。

第一行PageDomain pageDomain = TableSupport.buildPageRequest();,引入了一个新的类PageDomain,这个类又是干嘛的呢?

PageDomain的详细结构如下述代码所示。

public class PageDomain{        private Integer pageNum;        private Integer pageSize;        private String orderByColumn;        private String isAsc = "asc";        private Boolean reasonable = true;

其中包含了pageNum与pageSize分页参数,还有排序列以及排序方式。那么TableSupport.buildPageRequest()是如何获取到这些参数的呢?

其详细代码如下所示。

    public static PageDomain buildPageRequest()    {        return getPageDomain();    }}    public static PageDomain getPageDomain()    {        PageDomain pageDomain = new PageDomain();        pageDomain.setPageNum(ServletUtils.getParameterToInt(PAGE_NUM));        pageDomain.setPageSize(ServletUtils.getParameterToInt(PAGE_SIZE));        pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));        pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));        pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));        return pageDomain;    }

在方法内部,调用了函数 getPageDomain(),在getPageDomain()中,获取请求参数时使用了一个工具类方法:ServletUtils.getParameterToInt,我们再来看看这方法。

public class ServletUtils{        public static String getParameter(String name)    {        return getRequest().getParameter(name);    }    // 其他方法....}

如何便逐层将前端Request的分页参数获取到了对象pageDomain中。

那么分页参数又是如何转换为sql执行的呢?

代码查找

接着研究startPage()方法,后续一句代码为:

String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());

我们来看看这个方法的内部。

    public static String escapeOrderBySql(String value)    {        if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value))        {            throw new UtilException("参数不符合规范,不能进行查询");        }        return value;    }

这个方法知识检查order_by sql语句是否合法的。

接着,我们来到了关键的:PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);

其中的startPage方法,我们来看看其执行代码:

public static  com.github.pagehelper.Page startPage(int pageNum, int pageSize, java.lang.String orderBy) {    return null;  }

一脸懵逼!

哦~经过询问度娘,我们知道,这个是一个与mybatis相关的分页工具,叫PageHelper,孤陋寡闻了。

                    com.github.pagehelper            pagehelper-spring-boot-starter        

在配置文件application.yml中:

# PageHelper分页插件pagehelper:   helperDialect: mysql  supportMethodsArguments: true  params: count=countSql 

来源地址:https://blog.csdn.net/m0_58719994/article/details/128883185

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

若依框架---PageHelper分页(一)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

若依框架整合mybatis-plus

在使用若依(RuoYi-vue)时,发现若依用的是mybatis而不是mybatis-plus,所以为了保留原有代码生成器生成的方法,外加入mybaits-plus,故有了下面的内容: 1、ruoyi-admin的prom.xml中添加my
2023-08-17

ssm框架+PageHelper插件如何实现分页查询功能

这篇文章主要介绍了ssm框架+PageHelper插件如何实现分页查询功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过搭建ssm框架,然后通过mybatis的分页插件p
2023-06-15

【若依后管框架(前后端分离版)】 如何部署若依以及添加自己的功能模块和菜单

【若依后管框架(前后端分离版)】 如何添加自己的功能模块以及菜单 【文章开始之前,先说一句,若依牛逼!】 文章目录 【若依后管框架(前后端分离版)】 如何添加自己的功能模块以及菜单1 若依框架简介2 若依框架【前后端分离版】下载安装
2023-08-18

结合若依框架实现微信小程序授权登录

文章目录 1 前言1.1 环境准备1.2 登录流程 2.小程序代码2.1 新增按钮微信授权登录2.2 创建wx.Login和wxHandleLogin方法 3.后端代码3.1 yml配置文件中新增微信小程序id和秘钥3.2
2023-08-16

pageHelper一对多分页解决方案示例

这篇文章主要为大家介绍了pageHelper一对多分页解决方案示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-16

若依框架RuoYi项目运行启动教程【傻瓜式教程】

💂 个人网站:【紫陌】【笔记分享网】 💅 想寻找共同学习交流、共同成长的伙伴,请点击【前端学习交流群】 启动若依项目 1.官网下载代码 若依官网 若依在线文档 首先去官网下载代码 链接到码云下载,要么
2023-08-16

编程热搜

目录