PageHelper插件分页特点:
只需要你开启分页(就是你指定当前页和每页要显示的条数)----再提供一些数据即可,下面介绍用法。
本章介绍在Maven环境下使用的方法
第一步:在pom.xml配置文件中导入如下依赖
<!--mybatis分页插件的使用-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.2</version>
</dependency>
第二步:一般情况下在mybatis核心配置文件sqlMapConfig.xml中引入分页插件已经封装好的一个分页类如下:
注意:在配置文件中放配置信息时是有先后顺序的,你需要将它放到别名--或者其它的东西后面。
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
</plugin>
</plugins>
第三步:开发分为三层: controller(web层)接收页面的请求参数等,贴下我的分页代码和简单的注释如下:
//商品列表展示---
@RequestMapping("/queryProductList")
//商品id 级别 model域 搜索框 当前页
public String queryProductList(Integer category,Integer type,Model model,String keyWord,Integer currentPage){
//封装一个pager对象
if (currentPage ==null){
currentPage =1;
}
//查询数据
List<Product> product= productIndexService.findProductById(category,type,keyWord,currentPage,CLUtils.PAGE_SIZE);
//交给插件进行管理分配分页信息
PageInfo<Product> pageInfo = new PageInfo<>(product);
// if (category == null){
// category=-1;
// type=-1;
// }
//每次点击时访问
String url="queryProductList.action?category="+category+"+&type="+type;
long total = pageInfo.getTotal();//获得总条数
int pages = pageInfo.getPages();//获得总页数
model.addAttribute("total",total);
Pager pager=new Pager(pages,url,currentPage);//封装的一个类
model.addAttribute("pp",product);
model.addAttribute("pager",pager);//放入域中
return "/jsp/pre/product/queryProductList.jsp";
}
第四步:service开启分页仅一行代码即可
//开启分页 当前页 每页显示的条数
PageHelper.startPage(currentPage, pageSize);
另外附上分页插件的一些代码的意思:
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//排序
private String orderBy;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//第一页
private int firstPage;
//前一页
private int prePage;
//下一页
private int nextPage;
//最后一页
private int lastPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
自定义分页:
public class PageFullUtil<T> {
//当前页
private int Thispage;
//每页显示的条数
private int EverySize;
//总条数
private int NumberCount;
//数据集合
private List<T> NumberList;
//总页数
private int pageSum;
public PageFullUtil(int thispage, int everySize, List<T> numberList) {
this.Thispage = thispage;
this.EverySize = everySize;
//总条数
this.NumberCount=numberList.size();
//分页数据根据(当前页,每页显示的条数)得到要显示的数据
//索引=(当前页-1)*每页显示的条数
//每页实时显示的数据 利用 集合封装的方法sublist
this.NumberList =numberList.subList ((thispage-1)*everySize,((thispage-1)*everySize+everySize)<numberList.size()?((thispage-1)*everySize+everySize):numberList.size());
//总页数
this.pageSum=numberList.size()%everySize==0?numberList.size()/everySize:(numberList.size()/everySize)+1;
}