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>

第五步 效果展示

posted @ 2019-02-21 14:10  吃奶滴虫虫  阅读(330)  评论(0编辑  收藏  举报