转载

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

1、Maven中引入依赖

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

2、代码中分页的使用

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

3、源码分析

PageHelper.startPage(page,pageSize);

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

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

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

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

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

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

List<Map<String, Object>> list = detailMapper.findCourseCredits(studentCode);

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

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

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

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

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

4、性能优化

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

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

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

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

原文  https://juejin.im/post/5d21755ae51d4510a503362e
正文到此结束
Loading...