用法示例
PageHelper.startPage(pageNum, pageSize);
PageInfo<DemoUser> pageInfo = new PageInfo<DemoUser>(demoUserMapper.selectList(null));\
PageHelper.clearPage();
源码解析
1 开启分页,将分页参数 包装成Page 分页对象, 并且保存在当前线程 LocalthreadMap
2 mapper开始sql查询 经过PageInterceptor拦截器 执行intercept 方法
3 继续跟踪拦截器 intercept方法 ,判断此查询是否需要分页查询(判断方法: 根据刚才设置ThreadLocalMap Page 对象)
4 开始进入分页查询 ,获取LocalThreadMap 的Page对象 并丰富到参数处理对象 parameter 上
5 生成分页sql
6 生成数据库PreparedStatement对象 查询数据库
7 结尾 PageHelper.clearPage()清除当前缓存ThreadLocalMap信息