下面要给大家介绍的就是mybatis分页插件实现的内容,你知道应该如何去实现吗?具体的实现步骤是怎样的?下面一起来详细的看看具体步骤吧!
一、代码实现步骤
1、首先要做的就是导入依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.4</version> </dependency>
2、之后,就要在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>
3、之后,就是要在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); }
4、之后在页面使用分页信息
<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>
5、最终结果
以上实现方式仅供参考,更多相关内容,可以继续关注奇Q工具网的java架构师栏目了解。
推荐阅读: