网上能找到的教程,关于如何配置一般写的都很清楚,配置完成之后,发现最多只是做一下注释,看过之后实际使用却会出现问题,想在这里做一下总结。
使用之前,记得导入依赖,并在Mybatis配置文件中启用。
先简要说一下它的原理。PageHelper在需要使用它的时候加入如下代码。
PageHelper.startPage(pageNum, pageSize);
pageNum, pageSize 分别指 当前的页码,每页的条目数。
这之后,pageHelper在后续的代码中将对传入的列表进行分页。
通常我们会将它用在业务Service层,将分页好的数据传给Controller。现将一段代码作为示例:
方法的返回值为: PageInfo<Route> Route为泛型,为列表数据的pojo类
入参:PageBean是自定义封装的形式,其中包含了pageNum pageSize属性
@Override public PageInfo<Route> findRouteList(Pagebean pb) { int pageSize = pb.getPageSize(); int pageNum = pb.getPageNum(); PageHelper.startPage(pageNum, pageSize); //调用dao层从数据库取列表数据(sql无需做limit分页) List<Route> routes = routeDao.findRouteAllInOne(pb); //将列表数据 交给pageHelper处理 PageInfo<Route> pageInfo = new PageInfo<Route>(routes); return pageInfo; }
其中能用到的数据非常多,以注释的形式标注
{ endRow: 5 hasNextPage: true //是否有下一页(通常用来决定是否显示 "下一页"链接) hasPreviousPage: false //是否有上一页(通常用来决定是否显示 "上一页"链接) isFirstPage: true //是否是首页 isLastPage: false //是否是尾页 list: [分页后 当前页的对象list] //列表数据 将用来在页面for展示 navigateFirstPage: 1 navigateLastPage: 8 //这两项 ,在手写分页导航条的时候有用,如果使用前端框架 可能用不上 navigatePages: 8 //分页导航条中 想显示的数量,(结果有100页 ,当前页最多只显示8页的链接,决定了navigatepageNums列表的长度) navigatepageNums: [1, 2, 3, 4, 5, 6, 7, 8] nextPage: 2 pageNum: 1 pageSize: 5 pages: 104 //总页数 prePage: 0 //上一页页码 size: 5 startRow: 1 total: 517 //总条目数 }
配合使用前端框架分页组件 ,效果更佳
<div class="page_num_inf"> <i></i> 共 <span v-text="pageInfo.pages"></span>页 <span v-text="pageInfo.total"></span>条 </div> <div class="pageNum"> <ul id="laypage"> <li><a @click="changePage(1)">首页</a></li> <li class="threeword" v-show="pageInfo.hasPreviousPage"><a @click="changePage(pageInfo.prePage)" >上一页</a></li> <li v-for="pageNum in pageInfo.navigatepageNums"><a @click="changePage(pageNum)" v-text="pageNum"></a></li> <li class="threeword" v-show="pageInfo.hasNextPage"><a @click="changePage(pageInfo.nextPage)" >下一页</a></li> <li class="threeword" v-show="pageInfo.hasNextPage"><a @click="changePage(pageInfo.pages)" >末页</a></li> </ul> </div>
原文:https://www.cnblogs.com/buglife/p/14402134.html