分页插件PageHelper

PageHelper使用

https://blog.csdn.net/qq_35387940/article/details/91530234

源码解析

分页,首先是查询该页结果列表,同时还要查寻总共多少条,因为前端页面要去展示分页的导航栏等信息,换句话其实有两条SQL

使用PageHelper本身肉眼看到的就是一个查询,而且这个查询没有limit分页的参数,总数的查询也看不到,其实这些都隐藏起来了
PageHelper使用SQL增强的方法自动帮我们做了SQL的拼接,总数的查询。

PageHelper.startPage();
作用仅仅是将分页的参数进行封装到线程变量中,这个变量在拦截器中做sql增强的时候会使用到;
注意点,使用的时候下一个查询SQL必然是分页的,所以如果有分支判断的时候需要谨慎,防止不必要的查询使用了分页

SpringBoot整合,其实是使用了拦截器,PageInterceptor进行SQL增强。

源码解析中遇到一个挺有意思的设计
1 分页参数封装
PageHelper.startPage(pageNum, pageSize);

设置分页参数保存到线程变量中;此为PageHelper设计规则 还有另外一种方式设置分页参数采用RowBond 采用此种方法需要注意的时候查询紧随其后,因为下一次查询必分页

初始创建Page对象的时候创建的类型没有确定,是一个泛型,这种情况Idea显示看不到值,不确定参数,那么就是Object对象

2 mybatis查询返回参数采用Page 来进行接收参数
Page 来进行接收参数 本身继承ArrayList 同时还可以获取到查询总条数的记录 实际是两条SQL的结果集合并,正常返回是一个List,在此基础上重新定义了一个数据结构Page,其实质还是List,采用继承,属性包含

SQL增强的整体流程可以参考如下文献
参考文献
https://blog.csdn.net/houysx/article/details/80230628

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值