前言:该本页插件需要对Mybatis框架的底层源码有一定的了解,可以看另一篇关于Mybatis四大内置对象的源码解读。
尽管如今有许多成熟被广泛使用的分页插件,本篇文章在实现分页插件的同时,更侧重实现原理与思想思路,为我们在实际开发中遇到困难时提供一个解决问题的思路和参考
一、为什么需要分页插件
在实际开发的过程中,我们存在后台数据库的信息资料是需要展示给用户观看的,但数据量一旦过大,如果集中全部展示出来给用户看,就会造成一种凌乱不规整的不良视觉效果,这个时候就需要对我们需要展示给用户的资料信息进行整理,以用户的舒适度为前提,再展示出来。
二、分页插件的好处
提高性能,减少内存的压力(减低宽带使用,提高访问速度),一次查20个,比一次查20000个性能肯定更好;另外如果数据量很大,一次性将内容都查询出来,查询出来的结果是放在内存里面的,严重损耗内存。
根据用户的需要,提供适当的数据。如新闻,一般人可能只看最近前20条;如果我们将后面的也都查询出来了,就是浪费时间与资源。
查询效率快,因为只显示每页的条数,而不是把所有的数据加载出来,另外页面好看,比如几十万的数据,你不分页会把页面撑爆
三、分页插件的问题与思路
众所周知,分页的最重要的两个数据是展示数量以及页码,这个是由客户端决定的,我们后台无法进行操控,就需要客户端告诉我们这些信息,从而根据客户端需求进行分页数据的展示。而我们如何接收前端的请求的同时,既需要能够知道客户端是否需要分页需求,又要降低代码的侵入性(因为分页的需求并不是所有客户发送过来的请求都需要,如果所有接口都接收分页数据,容易造成接口污染),这是需求侧重解决的一个问题。尤其在分布式开发中,这种情况会变得更复杂。
1.个人思路解析图:
![](https://img-blog.csdnimg.cn/img_convert/6e78b8c3b9cab5a0e0d6f0956c184279.png)
2.最原始的分页手段面临的问题:
在最原始的处理分页手段中,需