前言
使用了Mybatis的分页插件
一、准备工作
1.导依赖
2.在mybatis主配置文件配置插件
3.使用
1.导依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.11</version>
</dependency>
2.在mybatis主配置文件配置插件
<!--注意和其他标签的先后顺序-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
3.使用
//这个分页插件会对所有的查询进行拦截然后拼接(如mysql拼接 LIMIT)
//第一个参:页数 第二个参:一页显示多少条
PageHelper.startPage(1,5);
4.实例
//分页查询所有
private Integer page=1;
@GetMapping("/student")
public ModelAndView select(Integer page) throws IOException {
ModelAndView mv=new ModelAndView();
InputStream in=Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(in);
SqlSession session=sessionFactory.openSession();
MapperHelper mh=new MapperHelper();
mh.processConfiguration(session.getConfiguration());
//--------------------------------------------------
//--------------------------------------------------
//如果页面没有传值就使用默认值,防止为给全局变量赋值为null
if(page!=null) {
this.page=page;
}
StudentMapper studentMapper=session.getMapper(StudentMapper.class);
//分页
PageHelper.startPage(this.page,5);
List<Student> list=studentMapper.selectAll();
//将查询的数据封装成PageInfo对象可以更加方便前端分页
PageInfo<Student> pi=new PageInfo<Student>(list);
mv.addObject("pi",pi);
System.out.println(pi);
mv.setViewName("/index.jsp");
session.close();
return mv;
}
前端
<%@ page language="java" isELIgnored="false" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table width="80%" border="1">
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>外键</th>
</tr>
<!--pi.getList从封装的对象中拿,封装前集合的查询数据-->
<c:forEach items="${pi.getList()}" var="s">
<tr align="center">
<td>${s.sid }</td>
<td>${s.sname }</td>
<td>${s.sex }</td>
<td>${s.eid }</td>
</tr>
</c:forEach>
</table>
当前页数${pi.pageNum }/${pi.pages }<br/>
<a href="javascript:tj(1)">第一页</a>
<c:if test="${pi.hasPreviousPage==true }">
<a href="javascript:tj(${pi.prePage })">上一页</a>
</c:if>
<c:if test="${pi.hasPreviousPage==false }">
上一页
</c:if>
<c:forEach items="${pi.navigatepageNums}" var="s">
<a href="javascript:tj(${s })">${s}</a>
</c:forEach>
<c:if test="${pi.hasNextPage==true }">
<a href="javascript:tj(${pi.nextPage })">下一页</a>
</c:if>
<c:if test="${pi.hasNextPage==false }">
下一页
</c:if>
<a href="javascript:tj(${pi.pages })">最后一页</a>
PageInfo属性
pages:数总页数
pageNum:当前页
hasPreviousPage:是否有上一页
hasNextPage:是否有下一页
navigatepageNums:导航编码数
navigatePages:导航条数(8条)
prePage:上一页页数
nextPage:下一页页数
total:总条数