PageHelper分页插件

一.项目地址

  • 在 github 的项目地址:https://github.com/pagehelper/Mybatis-PageHelper
  • 在 gitosc 的项目地址:http://git.oschina.net/free/Mybatis_PageHelper

二.导入maven依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.2</version>
</dependency>

三.配置拦截器插件

1.在mybatis中配置(此时并没有spring来管理mybatis)

<!--
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?,
typeAliases?, typeHandlers?,
objectFactory?,objectWrapperFactory?,
plugins?,
environments?, databaseIdProvider?, mappers?
-->

<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
        <property name="param1" value="value1"/>
    </plugin>
</plugins>

2.使用spring容器管理(此时mybatis已交由spring容器管理)

1.helperDialect :分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。
2.reasonable :分页合理化参数,默认值为 false 。当该参数设置为 true 时, pageNum<=0 时会查询第一页, pageNum>pages (超过总数时),会查询最后一页。默认 false 时,直接根据参数进行查询。


<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 注意其他配置 -->
    <property name="plugins">
        <array>
            <bean class="com.github.pagehelper.PageInterceptor">
                <property name="properties">
                    <!--使用下面的方式配置参数,一行配置一个 -->
                    <props>
                        <prop key="helperDialect">mysql</prop>
                        <prop key="reasonable">true</prop>
                    </props>

                </property>
            </bean>
        </array>
    </property>
</bean>

四.使用方式

  • 使用基本使用方式有6中,此处使用PageHelper.startPage 静态方法调用
  • 这种方式是我们要掌握的 在你需要进行分页的 MyBatis 查询方法前调用PageHelper.startPage 静态方法即可,紧
  • 跟在这个方法后的第一个MyBatis 查询方法会被进行分页。
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
//紧跟着的第一个select方法会被分页
List<Country> list = countryMapper.selectIf(1);

五.PageInfo类

  • 一般查询结果是绑定PageInfo类来进行处理的
  • ModelAndView mv = new ModelAndView();
    List<Orders> ordersList = ordersService.findAllByPage(page,pageSize);
    PageInfo info = new PageInfo(ordersList);
    mv.addObject("pageInfo",info);
    mv.setViewName("orders-page-list");

     

  • 其中PageInfo类中的一些属性需要了解

    • list:我们查询出的数据结果集(重点)

    • pageNum:当前页

    • pageSize:每页数量

    • size:当前页数量

    • startRow:当前页面地一个元素在数据库中的行号

    • endRow:当前页面在最后一个元素在数据库中的行号

    • total:总记录数

    • pages:总页数

    • isFirstPage:是否为第一页

    • isLastPage:是否为最后一页

    • prePage:前一页

    • nextPage:下一页

六.jsp代码分页代码(菜鸟傻瓜代码,请各大佬指正 ('' ..''))

<%--							总页数小于5--%>
							<c:if test="${pageInfo.pages<=5}">
								<c:forEach begin="1" end = "${pageInfo.pages}" var="page" >

<%--									如果下标为当前页则显示为红色start--%>
									<c:if test="${page==pageInfo.pageNum}">
										<li><a href="${pageContext.request.contextPath}/orders/findAllByPage.do?page=${page}&pageSize=${pageInfo.pageSize}" style="background-color: #00a7d0">${page}</a></li>
									</c:if>
									<c:if test="${page!=pageInfo.pageNum}">
										<li><a href="${pageContext.request.contextPath}/orders/findAllByPage.do?page=${page}&pageSize=${pageInfo.pageSize}">${page}</a></li>
									</c:if>
<%--									如果下标为当前页则显示为红色end--%>

								</c:forEach>
							</c:if>
<%--							总页数大于5页--%>
							<c:if test="${pageInfo.pages>5}">

<%--								当前页小于3--%>
								<c:if test="${pageInfo.pageNum<3}">
									<c:forEach begin="1" end = "5" var="page" >
										
<%--									如果下标为当前页则显示为红色start--%>
										<c:if test="${page==pageInfo.pageNum}">
											<li><a href="${pageContext.request.contextPath}/orders/findAllByPage.do?page=${page}&pageSize=${pageInfo.pageSize}" style="background-color: #00a7d0">${page}</a></li>
										</c:if>
										<c:if test="${page!=pageInfo.pageNum}">
											<li><a href="${pageContext.request.contextPath}/orders/findAllByPage.do?page=${page}&pageSize=${pageInfo.pageSize}">${page}</a></li>
										</c:if>
<%--									如果下标为当前页则显示为红色end--%>

									</c:forEach>
								</c:if>
<%--								当前页>=3且总页减当前页>=3--%>
								<c:if test="${pageInfo.pageNum>=3&&(pageInfo.pages-pageInfo.pageNum)>=3}">
									<c:forEach begin="${pageInfo.pageNum-2}" end = "${pageInfo.pageNum+2}" var="page" >
<%--									如果下标为当前页则显示为红色start--%>
										<c:if test="${page==pageInfo.pageNum}">
											<li  ><a href="${pageContext.request.contextPath}/orders/findAllByPage.do?page=${page}&pageSize=${pageInfo.pageSize}" style="background-color: #00a7d0">${page}</a></li>
										</c:if>
										<c:if test="${page!=pageInfo.pageNum}">
											<li><a href="${pageContext.request.contextPath}/orders/findAllByPage.do?page=${page}&pageSize=${pageInfo.pageSize}">${page}</a></li>
										</c:if>
<%--									如果下标为当前页则显示为红色end--%>

									</c:forEach>
								</c:if>
<%--								总页减当前页<3--%>
								<c:if test="${(pageInfo.pages-pageInfo.pageNum)<3}">
									<c:forEach begin="${pageInfo.pages-4}" end = "${pageInfo.pages}" var="page" >
<%--									如果下标为当前页则显示为红色start--%>
										<c:if test="${page==pageInfo.pageNum}">
											<li ><a href="${pageContext.request.contextPath}/orders/findAllByPage.do?page=${page}&pageSize=${pageInfo.pageSize}" style="background-color: #00a7d0">${page}</a></li>
										</c:if>
										<c:if test="${page!=pageInfo.pageNum}">
											<li><a href="${pageContext.request.contextPath}/orders/findAllByPage.do?page=${page}&pageSize=${pageInfo.pageSize}">${page}</a></li>
										</c:if>
<%--									如果下标为当前页则显示为红色end--%>

									</c:forEach>
								</c:if>

							</c:if>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值