ruoyi-分页

分页展示

从页面中可以看出,若依处理大量数据时,通过分页进行数据展示
在这里插入图片描述

源码分析

前端

  • 打开字典管理源码文件,<pagination>组件为分页组件
    • v-show: 在总条数为0时,不显示该分页内容
    • @pagination: 当前页数或每页条数进行改变时,就触发getList()方法

在这里插入图片描述

  • 若依中,<pagination>组件实际上是将<el-pagination>组件进行封装,进行全局组件挂载

在这里插入图片描述
在这里插入图片描述

  • 当前页或每页数量改变时,触发getList()方法,getList()方法会调用listType()方法发送请求到后端获取数据,从后端获取到的数据进行相关数据的赋值处理

在这里插入图片描述
在这里插入图片描述

  • 通过开发者工具进行后端数据查看,其中,pageNum为第几页,pageSize为每页条数

在这里插入图片描述
在这里插入图片描述

后端

  • 后端响应代码,实现分页需要执行startPage()方法进行设置分页参数,getDataTable()将返回的参数进行封装

在这里插入图片描述

startPage() 方法

  • 实现分页设置
  • 首先,SysDictTypeController类继承了BaseController类,调用startPage()方式时,实际上调用了父类的startPage()方法
    在这里插入图片描述
  • 其次,BaseController类的startPage()方法又嗲用了PageUtils类的静态方法startPage(),而PageUtils类又继承了PageHelper类,调用自定义的TableSupport类的静态方法buildPageRequest()进行构建分页请求,将获取到的当前页和每页条数进行封装到java提供的分页类PageHelper类中,而PageHelper类实际上是分页时所需要调用的函数
    在这里插入图片描述
  • 在TableSupport类中,buildPageRequest()方法调用了getPageDomain()方法,通过ServletUtils类的getParameterToInt()方法获取当前页和每页条数封装到分页对象pageDomain中进行返回
    在这里插入图片描述
  • ServletUtils类中的getParameterToInt()方法通过http的request请求获取指定参数进行返回
    在这里插入图片描述
  • PageHelper类又继承了PageMethod类,PageHelper.startPage()方法调用了PageMethod类的startPage()方法,将pageNum和pageSize添加到了Page类中
    在这里插入图片描述

getDataTable()方法

  • 将返回的数据进行封装

  • SysDictTypeController类的getDataTable()方法实际调用了父类的getDataTable()方法,将list数据进行整合,setTotal()方法时,通过构造PageInfo对象将list表数据进行处理返回表数据的总条数

在这里插入图片描述

  • PageInfo对象继承了PageSerializable类,在构造时调用了super()方法,进入父类PageSerializable进行构造,类PageSerializable将List进行强转Page,说明Page为List的子类,获取该list的总条数进行赋值
  • 子类PageInfo调用getTotal()方法时,实际上调用了父类的getTotal()方法获取总数

在这里插入图片描述
在这里插入图片描述

分页实现

  • selectDictTypeList() 方法最终会到xml文件中,从数据库中获取数据进行返回,而xml文件中实际上并没有对分页进行处理
    在这里插入图片描述

  • 前端访问时,查看后端日志,sql语句被mybatis进行拦截并处理后执行,其中,limit 指向的是从第10条数据开始的10条数据

在这里插入图片描述
在这里插入图片描述

  • 在执行分页查询时,MyBatis多请求了sql语句: select count(0) from sys_dict_type 将返回得到的总条数赋值到了指定Page对象的total属性上.在获取total时将list进行强转为Page获取total属性,赋值给了PageSerializable的total属性,通过子类PageInfo调用父类getTotal()获取total的值

在这里插入图片描述

  • 表数据的获取则是MyBatis获取之前startPage()时处理的PageHepler类中的属性,进行处理后对sql语句进行修改和参数赋值,从而获取指定表数据
    在这里插入图片描述

强转示例

  1. 定义类MyPage
    在这里插入图片描述

  2. 定义方法selectMyPageList,返回List
    在这里插入图片描述
    在这里插入图片描述

  3. 调用selectMyPageList
    在这里插入图片描述

  4. 配置设置,启动项目访问接口查看
    在这里插入图片描述
    在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值