之前用PageHelper实现了分页查询的功能,因为PageHelper是个插件,当然方便实现查询,在实现查询的时候也不能忘了分页的基本业务逻辑,这里还是用myBatis框架写的查询语句,不借助PageHelper插件自己在java中的Service层书写业务逻辑完成手动分页。
一、分析思路
假如每页显示5条数据,当我们显示第一页数据的时候,展示数据中前5条数据,展示第二页数据的时候,展示6-10的数据,以此类推,我们就需要根据page(当前页数)和sizePerPage(每页显示个数)计算出每页数据的开始下标和结束下标。
二、具体实现
1、利用mapper接口和mapper文件实现SQL查询:
mapper文件
上述count(*)查询数据总个数,总个数的数据也需返给前端,以此来计算需要的页码数。
2、业务逻辑------Service层
上述的bookMapper.selectBookByPage参数是Map类型。
3、Controller层
4、返回数据
5、总结
经过测试可以看到上述的手动分页也是完全可以实现分页功能的,当然有插件的实现,肯定插件还是方便的,我简单记录一下,因为插件实现分页的原理的业务逻辑是跟手动分页的业务逻辑是一样的,把基本思路和原理搞清楚,去尝试实现一遍还是不错的。