iis服务器助手广告
返回顶部
首页 > 资讯 > 数据库 >若依框架---PageHelper分页(一)
  • 881
分享到

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

mysqlspringsql若依框架 2023-09-13 19:09:52 881人浏览 八月长安
摘要

我们简单阐述了若依系统中的分页架构,若依系统中的后端分页主要代码接口的三个特点: 返回值类型为TableDatainfo接口第一行代码startPage()接口最后一句:getDataTable(list)  获取分页参数 我们已

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

  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

您可能感兴趣的文档:

--结束END--

本文标题: 若依框架---PageHelper分页(一)

本文链接: https://www.lsjlt.com/news/406333.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作