首页 > 其他分享 >若依框架---PageHelper分页(十四)

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

时间:2023-02-20 14:04:34浏览次数:39  
标签:若依 java String Chain 布尔值 PageHelper --- 方法 Properties



 

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

在前几篇文章中,我们查看了 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​​中。

  

 专栏:​​若依框架​​

 

   关注公众号,领取资料 

标签:若依,java,String,Chain,布尔值,PageHelper,---,方法,Properties
From: https://blog.51cto.com/u_15949848/6068479

相关文章