GitHub PageHelper 分页插件源码解析

255 阅读1分钟

用法示例

PageHelper.startPage(pageNum, pageSize);
PageInfo<DemoUser> pageInfo = new PageInfo<DemoUser>(demoUserMapper.selectList(null));\
PageHelper.clearPage();

100.png

源码解析

   1 开启分页,将分页参数 包装成Page 分页对象, 并且保存在当前线程 LocalthreadMap

200.png

300.png

2 mapper开始sql查询 经过PageInterceptor拦截器 执行intercept 方法

400.png

3 继续跟踪拦截器 intercept方法 ,判断此查询是否需要分页查询(判断方法: 根据刚才设置ThreadLocalMap Page 对象)

500.png

600.png

4 开始进入分页查询 ,获取LocalThreadMap 的Page对象 并丰富到参数处理对象 parameter 上

700.png

 5 生成分页sql 800.png

6 生成数据库PreparedStatement对象 查询数据库

900.png

7 结尾 PageHelper.clearPage()清除当前缓存ThreadLocalMap信息

1000.png

更多访问杨少的gitHUb

源码地址下载