Mybatis的分页插件PageHelper源码解析和性能优化

1、Maven中引入依赖

2、代码中分页的使用

3、源码分析

PageHelper.startPage(page,pageSize);

设置页码和每页显示的条数

查看源码PageInterceptor类,实现了Interceptor接口

实现了Interceptor接口会重写下面三个方法

定义了拦截器,拦截Executor的query方法

在执行以下查询时,拦截器触发

List> list =detailMapper.findCourseCredits(studentCode);

我们的分页逻辑在intercept(Invocation invocation)方法,拦截器触发会执行这个方法

先查询总记录数,然后查询当页记录

4、性能优化

当查询总的记录数时会把所有的字段查询出来,当数据量大的时候这样会导致查询速度很慢,正常我们查询总条数应该只用查询一个主键字段就行,我们查看源码发现

这样我们再mapper中添加一个findCourseCredits_COUNT查询

重新debug试试,此时查询总记录数就是按照我们mapper中写的


你可能感兴趣的:(Mybatis的分页插件PageHelper源码解析和性能优化)