若依框架---PageHelper分页(十五)

简介: 若依框架---PageHelper分页(十五)

我们接着昨天的文章继续阅读PageHelper的项目源码。

昨日文章中我们介绍了com.github.pagehelper.page包中的两个类:PageParams以及PageBoundSqlInterceptors。了解到PageParams可以保存分页参数,而执行SQL的拦截器可以按照指定的次序保存在PageBoundSqlInterceptors.chain中。

并且作者在代码中使用了大量的java.util.Properties类的接口,我们也学习到了如何使用java.util.Properties类,以及Class.forName(xx).newInstance()这一创建对象的方式。

通过我们测试Class.forName(xx).newInstance(),这一创建对象的方式已经是“废弃”了,即Deprecated,现在应该使用如下方式:

Object ob = Class.forName("xxx").getDeclaredConstructor(...).newInstance(...)

今天我们继续来看com.github.pagehelper.page中的其他两个类:PageMethod以及PageAutoDialect

PageMethod


PageMethod,基础分页方法,有两个静态变量,一个是我们前面已经熟知的LOCAL_PAGE,线程局部变量;另一个静态变量DEFAULT_COUNT,默认值为true。


其中的方法大致可以划分为:


  • LOCAL_PAGE的setter/getter/clear方法: setLocalPage/getLocalPage/clearPage;
  • 获取查询count总数的方法:long count(select);
  • 五种参数的名为startPage方法;
  • 两种参数形式的offsetPage方法;
  • 设置参数的orderBy属性的orderBy方法;
  • 通过配置文件设置DEFAULT_COUNT值的setStaticProperties方法。


看到startPage方法我们或许会有些眼熟,没错,在Controller接口入口处执行的方法不也叫startPage吗,通过查找若依系统源码,我们发现某个Controller中调用的startPage方法入口均为BaseController中的startPage方法,并在方法内部有:

PageHelper.startPage(pageNum, pageSize, orderBy).....


而PageHelper的类定义为:

public class PageHelper extends PageMethod implements Dialect, BoundSqlInterceptor.Chain {
    // 此处省略类内部代码
}


即PageHelper是PageMethod的子类,而实际执行的startPage方法正是PageMethod中的startPage方法。

根据我们前面的解读,我们知道startPage方法的重要作用就是设置Page变量,并存储在线程局部变量LOCAL_PAGE中以便后续执行分页sql时获取。


根据PageHelper中的文档HowToUse.md以及源码,我们了解到offsetPagestartPage方法作用相似。(源码显示offsetPage方法不支持设置reasonable与pageSizeZero参数)。

目录
相关文章
|
7月前
|
SQL Java 关系型数据库
若依框架---PageHelper分页(十一)
若依框架---PageHelper分页(十一)
215 0
|
7月前
|
SQL 数据库
若依框架---PageHelper分页(六)
若依框架---PageHelper分页(六)
183 0
|
7月前
|
SQL Oracle 关系型数据库
若依框架---PageHelper分页(七)
若依框架---PageHelper分页(七)
171 0
|
7月前
|
SQL Java 数据库连接
若依框架---PageHelper分页(四)
若依框架---PageHelper分页(四)
183 0
|
SQL XML 架构师
SpringBoot从小白到精通(十六)使用pagehelper实现分页查询功能
之前讲了Springboot整合Mybatis,然后介绍了如何自动生成pojo实体类、mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能。接下来要说一说Mybatis 的分页功能:使用Mybatis-PageHelper插件,实现分页功能。
SpringBoot从小白到精通(十六)使用pagehelper实现分页查询功能
|
7月前
|
SQL Oracle 关系型数据库
若依框架---PageHelper分页(五)
若依框架---PageHelper分页(五)
216 0
|
7月前
|
SQL Java 数据库连接
若依框架---PageHelper分页(三)
若依框架---PageHelper分页(三)
273 0
|
7月前
|
SQL Java 数据库连接
Javaweb之SpringBootWeb案例分页插件的详细解析
Javaweb之SpringBootWeb案例分页插件的详细解析
32 0
|
7月前
|
SQL Java 关系型数据库
PageHelper分页插件最新源码解读及使用
PageHelper分页插件最新源码解读及使用
|
7月前
|
前端开发 关系型数据库 MySQL
springboot+jpa+tymeleaf实现分页功能
springboot+jpa+tymeleaf实现分页功能
39 0