使用分页插件pageHelper

pageHelper使用步骤

    • 1.引入pageHelper的依赖(在eclipse中则需要导入相应jar包)
    • 2.配置拦截器插件
    • 3.action中实现分页查询
    • 4.jsp页面显示分页

分页效果如下:
在这里插入图片描述

pageHelper官方文档有相应的配置文件和多种操作方法,以下为自己的操作步骤:

1.引入pageHelper的依赖(在eclipse中则需要导入相应jar包)


    <dependency>
      <groupId>com.github.pagehelpergroupId>
      <artifactId>pagehelperartifactId>
      <version>5.0.0version>
    dependency>

2.配置拦截器插件

在 mybatis-config.xml 中配置

注:
1.plugins在配置文件中的位置有特定要求:
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?,
typeAliases?, typeHandlers?,
objectFactory?,objectWrapperFactory?,
plugins?,
environments?, databaseIdProvider?, mappers?
2.配置中添加参数可参考官方文档 pageHelper官方文档 中 2.3 分页插件参数介绍

<plugins>
		
		<plugin interceptor="com.github.pagehelper.PageInterceptor">
			
        	
			
			<property name="reasonable" value="true"/>	
		plugin>
	plugins>

3.action中实现分页查询

注:查询应紧跟在startPage后面
PageHelper.startPage(pn,5);
List< Employee > emps = employeeService.getAll();

//查询员工数据(分页查询)
/**
 * 引入pangeHelper分页插件
 *      在查询之前调用方法startPage(pn,5)--》 插入页码pn(pn的默认值给0),以及每页显示条数5
 *      startPage后面紧跟的查询就是一个分页查询
 *      使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行(pageInfo封装了详细的分页信息,包括我们查询出来的数据)
 *      使用model存放数据,传给页面
 */
    @RequestMapping("/emps")
    public  String getEmps(@RequestParam(value = "pn",defaultValue = "1")Integer pn, Model model){
        
        PageHelper.startPage(pn,5);
        List<Employee> emps = employeeService.getAll();
        //用PageInfo对结果进行包装
        //pageInfo封装了详细的分页信息,包括我们查询出来的数据emps,并传入连续显示的页数(5页)
        PageInfo page = new PageInfo(emps,5);
        model.addAttribute("pageInfo",page);
        System.out.println(page);
        return "list";
        
    }

pageHelper中pageInfo包装的一些属性方法介绍:
(光标放在PageInfo上,使用ctrl+enter可查看封装的源代码)
pageNum;当前页码
pageSize;每页记录数
startRow;开始查询的记录
endRow;结束的记录
total;总记录数
pages;总页码
isFirstPage;是否是第一页
isLastPage;是否是最后一页
hasPreviousPage;是否前一页
hasNextPage;是否有下一页
navigatePages;连续显示的页码数
navigatepageNums;连续显示的页码数组

4.jsp页面显示分页

该显示页面使用了一些bootstrap插件来简化排版,并插入了分页组件
bootstrap入门级使用介绍(Bootstrap入门)

如下一段Java代码放在部分,添加重复使用的路径参数APP_PATH="http://localhost:3306/项目名"
<%
    pageContext.setAttribute("APP_PATH", request.getContextPath());
%>

<%--web路径:
    不以"/"开始的相对路径:找资源是以当前资源的路径为基准,容易出错
    以"/"开始的相对路径:找资源是以服务器路径为标准(http://localhost:3306),需要加上项目名
        例如http://localhost:3306/项目名
--%>

分页效果如下:
在这里插入图片描述

	<%--分页--%>
<div class="row">
    <%--分页文字信息--%>
    <div class="col-md-6">
        当前第${pageInfo.pageNum}页,共有${pageInfo.pages}页,总计${pageInfo.total}条记录
    div>
    <%--分页条信息--%>
    <div class="col-md-6">
        <nav aria-label="Page navigation">
            <ul class="pagination">
            	<%--首页--%>
                <li>
                    <a href="${APP_PATH}/emps?pn=1">首页a>
                li>
                <%--上一页(使用c标签判断是否有上一页,无上一页时按钮失效)--%>
                <c:if test="${pageInfo.hasPreviousPage}">
                    <li>
                        <a href="${APP_PATH}/emps?pn=${page_Num-1 }" aria-label="Previous">
                            <span aria-hidden="true">«span>
                        a>
                    li>
                c:if>
                    <li class="disabled">
                        <a href="${APP_PATH}/emps?pn=${page_Num-1 }" aria-label="Previous">
                            <span aria-hidden="true">«span>
                        a>
                    li>
				<%--显示连续显示的页数(并且当前显示的页码有高亮效果)--%>
                <c:forEach items="${pageInfo.navigatepageNums}" var="page_Num">
                    <c:if test="${page_Num == pageInfo.pageNum}">
                        <li class="active"><a href="#">${pageNum }a>li>
                    c:if>
                    <c:if test="${page_Num != pageInfo.pageNum}">
                        <li><a href="${APP_PATH}/emps?pn=${page_Num }">${pageNum }a>li>
                    c:if>
                c:forEach>
                <%--下一页(使用c标签判断是否有下一页,无下一页时按钮失效)--%>
                <c:if test="hasNextPage">
                    <li>
                        <a href="${APP_PATH}/emps?pn=${pageInfo+1 }" aria-label="Next">
                            <span aria-hidden="true">»span>
                        a>
                    li>
                c:if>
                    <li class="disabled">
                        <a href="${APP_PATH}/emps?pn=${pageInfo+1 }" aria-label="Next">
                            <span aria-hidden="true">»span>
                        a>
                    li>
                <%--末页--%>
                <li>
                    <a href="${APP_PATH}/emps?pn=${pageInfo.pages }">末页a>
                li>
            ul>
        nav>
    div>
div>

你可能感兴趣的:(bootstrap,mybatis,java)