分页工具-若依(RuoYi)框架提供的startPage

这篇文章主要是自己巩固一下RuoYi使用到的分页startPage

-------------------------------------------------------------------------------------------------------------------

介绍

           主要分为是否前端有传分页信息进行区别

           前提=》controller需要继承BaseController,因为它有startPage方法进行分页

再往下面解析,就是PageUtils实际调用的是PageHelper

 

--------------------------------------------------------------------------------------------------------------------

使用

startPage会实现自动分页,所以不需要做太多的操作

前端

        使用Get请求把数据通过url传递给后端

 后端

        一.先通过url获取参数进行分页流程

                第一步ServleUtils通过getParameter获取url参数

                第二步:我们在TableSupport可以看到getPageDomain方法进行设置第一步拿到的分页参数。

【注意:pageNum默认是1,pageSize默认是10】

 

                 第三步TableSupport内还有一个下面这个方法,也就是可以通过这个方法来获取已经封装好的PageDomain对象

                第四步:【根据介绍我们知道startPage调用了PageUtils的startPage方法 】

在下面红圈圈内的语句就是调用了第三步的方法获取封装好的PageDomain对象

最后把数据塞给PageHelper来分页

二、接着mybatis执行了啥??        

第一步:首先执行count进行数据条数统计

 第二步:接着通过上面获取的分页参数进行limit分页

 三、最后返回TableDataInfo对象

我们要知道

        结果 startPage(分页方法) + TableDataInfo(view对象)

        ----startPage我们上面一直都在说

        -----那getDataTable其实会封装TableDataInfo对象

问题来了:为什么要TableDataInfo????

             看看里面多全啊,那我们就不要自己再封装total、状态码啊,很方便!!

        

容易踩坑

1.修改数据库

可以去官网看看怎么改,默认是mysql

丢个链接吧点一下 =》   后台手册 | RuoYi

2.为什么分页没效果

startPage只对该语句以后的第一个查询(Select)语句得到的数据进行分页

如下

3、这里有个官方写的线程不可用情况

注意:

只要你可以保证在PageHelper方法调用后紧跟MyBatis查询方法,这就是安全的。因为PageHelperfinally代码段中自动清除了ThreadLocal存储的对象。 如果代码在进入Executor前发生异常,就会导致线程不可用,这属于人为的Bug(例如接口方法和XML中的不匹配,导致找不到MappedStatement时),这种情况由于线程不可用,也不会导致ThreadLocal参数被错误的使用。

其实这段话我也是贴官方写的,如果有大佬可以说的更好,欢迎留言,感谢感谢!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值