本文由黑壳网原创
本文来源mybaits 分页插件 pageHelper5.0.2~黑壳网
壳叔搞笑一刻
一个老帽儿从未乘过电梯。
这天,他来到一家饭店,站在电梯门口看见一位老太太进了电梯,过了一会儿,电梯门又打开了,出来了一位年轻漂亮的姑娘,他惊喜过望地想:“哇,要是把我老婆带来就好了。”
如果你在找Mybatis的分页插件,那么PageHelper一定会是你的首选。这一定会是使用最方便的分页插件。这个插件它支持任何复杂的单表,多表分页。
今天会详细介绍 pageHelper的5.0的使用
目前该插件,支持的数据库有
Oracle
Mysql
MariaDB
SQLite
Hsqldb
PostgreSQL
DB2
SqlServer(2005,2008)
Informix
H2
SqlServer2012
Derby
使用 PageHelper 你只需要在 classpath 中包含 pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar。
如果你使用 Maven,你只需要在 pom.xml 中添加下面的依赖:
com.github.pagehelper
pagehelper
5.0.2
与分页插件 PageHelper 5.0.0 同时发布的还有 pagehelper-spring-boot-starter。
如果你使用 Spring Boot,你只需要在 pom.xml 中添加下面的依赖:
com.github.pagehelper
pagehelper-spring-boot-starter
1.0.0
有关 pagehelper-spring-boot-starter 的用法可以参考集成示例 MyBatis-Spring-Boot
接着,在spring-mybatis.xml中是这样配置:
classpath:mapping/*.xml
helperDialect=mysql
配置结束后,进入正题,创建一个查询语句,用了pageHelper 查询语句与之前的一样。
select
from product
where 1 = 1
查询一个product 的表
/**
* 产品管理界面
*
* @param request
* @param model
* @return
*/
@RequestMapping(value = "productManage")
private String productManage(HttpServletRequest request, Model model, ProductDetail productDetail,
@RequestParam(required = true, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
PageHelper.startPage(page, pageSize);
List productDetails = productService.getProductManage(productDetail);
PageInfo p = new PageInfo(productDetails);
/**
* 返回产品查询信息
*/
model.addAttribute("productDetail", productDetail);
/**
* 返回产品信息集合
*/
model.addAttribute("productDetails", productDetails);
/**
* 分页配置信息返回
*/
model.addAttribute("page", p);
return "manage/product/productManage";
}
可以看到,方法里有两个参数,前面也说了,这是一个demo,仅仅只是一个非常简单的分页效果。
PageHelper.startPage(page, pageSize);
这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。
PageInfo这个类是插件里的类,这个类里面的属性还是值得看一看:
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
PageInfo
然后mv.addObject("page", p);
这样在页面中就可以通过${page.nextPage}翻到下一页,
${page.prePage}翻到上一页,
ok是不是简单了许多,热爱编程,学习不停止!