环境
<properties>
<java.version>1.8</java.version>
</properties>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
学习到Ibits主要类及描述
MappedStatement ,Executor
page :结果集返回类。我理解就是继承自ArrayList然后加了些 页码、页数、总条数等属性。
学习到PageHelper 主要类、方法
PageInterceptor : 实现 Interceptor(ibits 拦截接口)。
startPage方法 : 自己跟代码的入口。
大体流程
startPage 方法将limit所需参数设置到线程变量中(封装到page实体),供PageInterceptor 拦截器使用。
count的实现
- 入口 :PageInterceptor.intercept 方法
- 构建count sql
- 执行count sql
limit 的实现
入口 :PageInterceptor.intercept 方法
- 构建 limit sql
- 设置参数 与执行 (方法名十分明确)
保存结果集
入口:
主要代码