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

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

在前几篇文章中,我们查看了 PageHeler 中的包 com.github.pagehelper以及子包com.github.pagehelper.cache中的类与结构,并且借着cache包中类的写法了解到工厂模式以及java中另外一种类加载与创建对象的方法:Class.forName,以及通过GuavaCache以及SimpleCache熟悉了xxxBuilder创建对象的方式。


读源码就跟读文章一样


今天我们来学习另外一个子包:com.github.pagehelper.page。(按照字母大小应该讲com.github.pagehelper.dialect子包,但是dialect比较复杂,我们暂且放一下,了解了其他部分再反过来看它。)


page包


page包中有4个文件,以及其中的基础注释如下:


PageAutoDialect.java:基础方言信息。

PageBoundSqlInterceptors.java。

PageMethod.java: 基础分页方法。

PageParams.java: 参数信息


我们一一来看。


PageParams


PageParams,参数信息,包括属性包括:offsetAsPageNum(相当于pageNum),rowBoundsWithCount(布尔值,是否进行count查询),pageSizeZero(布尔值,true时不执行分页,返回全部结果),reasonable(布尔值,分页合理化),supportMethodsArguments(布尔值,是否支持接口参数来传递分页参数),countColumn(字符串,默认值0)。 方法除基础的setter/getter外,还有两个方法:

Page getPage(Object parameterObject, RowBounds rowBounds)


以及通过配置来初始对象的方法:

void setProperties(Properties properties)


在setProperties中大量使用了java.util.Properties类的方法,我们来了解一下这个java通用工具。


java.util.Properties实现了接口Map,Serializable, Clonable,并且该类是线程安全的,即多个线程可以共享单个 Properties 对象而无需进行外部同步。最主要的两个方法是:获取属性值getProperty(String key)与设置属性值setProperty(String key, String value)。


其他常用方法还有:从文件加载:load(InputStream), 将配置写入文件store(OutStream, String comments) 等。


PageBoundSqlInterceptors


该类包括一个接口参数值BoundSqlInterceptor.Chain及其getter方法,以及另外一个方法void setProperties(Properties properties)


通过阅读代码,我们发现setProperties其实就是对Chain的setter方法:通过在参数boundSqlInterceptors上配置多个类名,并通过Class.forName(xx).newInstance()创建其对象实体,之后调用BoundSqlInterceptorChain(Chain接口的一个实现)的构造函数创建一个Chain实体对象。


换句话说,这样就将sql的拦截器按照一定的次序保存在了PageBoundSqlInterceptors.chain中。


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