Mybatis分页插件--------Pagehelper
第一步:导入依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.4</version> </dependency>
第二步:在mybatis的全局配置文件mybatis-config.xml中配置该插件
Spring的相关配置:
<!-- 2.配置session工厂 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mybatis-config.xml" /> <property name="mapperLocations" value="classpath:mappers/*.xml"/> </bean> 在classpath:mybatis-config.xml中配置该插件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 配置分页插件 --> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库--> <property name="dialect" value="mysql"/> </plugin> </plugins> </configuration> 第三步 在Java代码中的查询语句之前调用插件 /** * 去所有文章展示页面,这个是去博客空间的主页 * * @return 携带上文章的参数,去文章首页 */ @RequestMapping(value = {URL_ARTICLE_LIST} ,method = {GET}) public ModelAndView home(HttpServletRequest request){ //拿到用户需要的是哪一页的文章数据 String str_pageNo = request.getParameter("pageNo"); if(str_pageNo == null){ //开始使用分页插件,准备查询第一页的8条数据 PageHelper.startPage(1, 8); } else{ //准备查询 第X页 的8条数据 PageHelper.startPage(Integer.parseInt(str_pageNo), 8); } //参数Map final Map<String,Object> map = Maps.newHashMap(); //获取所有作者的所有文章 final List<Article> articles = articleService.getAllArticle(); //将查询结果放入分页控件中 final PageInfo<Article> pageInfo=new PageInfo<>(articles); //组装数据,在JSP页面可以通过 ${articles} 或者 ${pageInfo}请求获取数据 map.put("articles",articles); map.put("pageInfo",pageInfo); //返回某个具体的JSP页面,并且携带上map里面的存储的数据 return new ModelAndView(FWD_ARTICLE_LIST_HOME,map); }
第四步 在页面使用分页信息
<!--下面的分页代码由Jay于18/3/26日修改,可以重用多次,请不要修改太多--> <div style="text-align: center"> <ul class="pagination"> <li <c:if test="${pageInfo.pageNum==1}"> class="disabled" </c:if>> <a href="<c:url value="/actions/article/list?pageNo=1"/> ">«</a> </li> <li> <!--如果当前页数是第一页,那么点上一页仍然是当前页。 --> <a href="<c:url value="/actions/article/list?pageNo=${pageInfo.pageNum==1?pageInfo.pageNum:pageInfo.pageNum-1}"/> ">上一页</a> </li> <!--判断最大页数是否超过X,如果超过X则是X,否则是最大页数。防止分页信息过长 --> <c:forEach begin="1" end="${pageInfo.pages>8?8:pageInfo.pages}" step="1" var="pageNo"> <li <c:if test="${pageInfo.pageNum==pageNo}"> class="active" </c:if>> <a href="<c:url value="/actions/article/list?pageNo=${pageNo}"/> ">${pageNo}</a> </li> </c:forEach> <li> <!--如果当前页数是最后一页,那么点击下一页仍然是当前页。 --> <a href="<c:url value="/actions/article/list?pageNo=${pageInfo.pageNum==pageInfo.pages?pageInfo.pageNum:pageInfo.pageNum+1}"/> ">下一页</a> </li> <li <c:if test="${pageInfo.pageNum==pageInfo.pages}"> class="disabled" </c:if>> <a href="<c:url value="/actions/article/list?pageNo=${pageInfo.pages}"/> ">»</a> </li> </ul> </div>
需要在JSP页面导入的CSS样式,摘自bootstrap
<style> .pagination { display: inline-block; padding-left: 0; margin: 20px 0; border-radius: 4px } .pagination > li { display: inline } .pagination > li > a, .pagination > li > span { position: relative; float: left; padding: 6px 12px; margin-left: -1px; line-height: 1.42857143; color: #337ab7; text-decoration: none; background-color: #fff; border: 1px solid #ddd } .pagination > li:first-child > a, .pagination > li:first-child > span { margin-left: 0; border-top-left-radius: 4px; border-bottom-left-radius: 4px } .pagination > li:last-child > a, .pagination > li:last-child > span { border-top-right-radius: 4px; border-bottom-right-radius: 4px } .pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover { z-index: 2; color: #23527c; background-color: #eee; border-color: #ddd } .pagination > .active > a, .pagination > .active > a:focus, .pagination > .active > a:hover, .pagination > .active > span, .pagination > .active > span:focus, .pagination > .active > span:hover { z-index: 3; color: #fff; cursor: default; background-color: #337ab7; border-color: #337ab7 } .pagination > .disabled > a, .pagination > .disabled > a:focus, .pagination > .disabled > a:hover, .pagination > .disabled > span, .pagination > .disabled > span:focus, .pagination > .disabled > span:hover { color: #777; cursor: not-allowed; background-color: #fff; border-color: #ddd } </style>
第五步 效果展示