关于pagehelper的几点

关于pagehelper的几点

基本逻辑

startpage设置threadlocal里的page对象
检查是否需要跳过分页逻辑skip()方法,再检查是否进行count查询
进行总数查询(如果有_COUNT的sql则直接执行,没有就手动生成一个mapstatement),然后设置总数page.setTotal(count);
进行分页查询,查到的结果addall到page实例上
然后返回给mybatis,最后有个finally方法里清空threadlocal里的page对象

以上流程对应的PageHelper的数据库方言包装的流程:

  • beforeCount : 是否需要查总数
  • getCountSql : 生成count sql ,交由ExecutorUtil.executeAutoCount()执行
  • afterCount : 设置page.setTotal(count)
  • beforePage : ExecutorUtil.pageQuery()方法里,调用此方法判断是否需要分页查询
  • getPageSql : ExecutorUtil.pageQuery()方法里,调用此方法生成page sql并执行得到结果list
  • afterPage : 设置分页查询结果list, page.addAll(pageList),根据情况再次设置setTotal()
  • afterAll : 目前无现

PageInterceptor dialect属性其实就是PageHelper,
intercept(Invocation invocation)内部逻辑
1、dialect就是pageHelper负责模板流程
2、Executor executor = (E

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值