Mybatis分页插件PageHelper的配置和使用方法
查询所有Demo 代码清晰
1.导两个jar包
①、pagehelper-4.1.6.jar 分页插件的核心包
②、jsqlparser-0.9.4.jar 所依赖的包
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.jsqlparser/jsqlparser -->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>0.9.4</version>
</dependency>
2.配置文件:
在mybatis-config.xml中配置如下:
<plugins>
<!-- 配置pagehelper分页插件 -->
<!-- PageHelper4.1.1 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql" />
<property name="offsetAsPageNum" value="false" />
<property name="rowBoundsWithCount" value="false" />
<property name="pageSizeZero" value="true" />
<property name="reasonable" value="false" />
<property name="supportMethodsArguments" value="false" />
<property name="returnPageInfo" value="none" />
</plugin>
</plugins>
3、login.jsp首页创建
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户首页</title>
</head>
<body>
<h1>点击进入注册页面</h1>
<a href="${pageContext.request.contextPath }/fenye">查询所有用户信息</a>
</body>
</html>
4、list.jsp分页查询成功页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--引入分页查询按钮的CSS格式-->
<link href="${pageContext.request.contextPath}/css/page.css" rel="stylesheet" type="text/css"/>
<title>分页查询</title>
</head>
<body>
<center>
<h1>分页显示</h1>
<!-- 设置表格格式-->
<table border="1" cellpadding="0" cellspacing="0" width="50%" align="center">
<tr align="center">
<th>编号</th>
<th>姓名</th>
<th>工资</th>
<th>部门</th>
</tr>
<!--
list是PageInfo<T>的结果集
这必须是list切记不要写成自己的pojo类属性
-->
<c:forEach items="${p.list }" var="emp">
<tr align="center">
<td>${emp.id }</td>
<td>${emp.eName }</td>
<td>${emp.sal }</td>
<td>${emp.dept.dname }</td>
</tr>
</c:forEach>
</table>
<!-- 分页查询按钮 不要改(pageNum、pages等)这些都是插件类提供好的属性变量
拿去用就改一下(/fenye)这个映射的路径
-->
<form action="${pageContext.request.contextPath}/fenye" method="post">
<ul class="pagination">
<li><a href="${pageContext.request.contextPath}/fenye?pageNum=1">首页</a></li>
<c:if test="${p.pageNum>1}">
<li><a href="${pageContext.request.contextPath}/fenye?pageNum=${p.pageNum-1}">上一页</a></li>
</c:if>
<c:forEach begin="1" end="${p.pages}" step="1" var="pageNum">
<li><a href="${pageContext.request.contextPath}/fenye?pageNum=${pageNum}">${pageNum}</a></li>
</c:forEach>
<c:if test="${p.pageNum<p.pages}">
<li><a href="${pageContext.request.contextPath}/fenye?pageNum=${p.pageNum+1}">下一页</a></li>
</c:if>
<li><a href="${pageContext.request.contextPath}/fenye?pageNum=${p.pages}">末页</a></li>
<li><a>共${p.pages }页</a></li>
<li><a>跳到<input type="text" name="pageNum" style="width: 20px; height: 20px">页</a></li>
<li><a><input type="submit" value="GO"/></a></li>
</ul>
</form>
</center>
</body>
</html>
5、page.css 在list.jsp中引入
ul.pagination {
display: inline-block;
padding: 0;
margin: 0;
}
ul.pagination li {display: inline;}
ul.pagination li a {
color: black;
float: left;
padding: 8px 16px;
text-decoration: none;
border-radius: 5px;
}
ul.pagination li a.active {
background-color: #4CAF50;
color: white;
border-radius: 5px;
}
ul.pagination li a:hover:not(.active) {background-color: #ddd;}
6、Controller层
@Controller
public class EmpController {
@Autowired
private EmpService empService;
@RequestMapping("/fenye")
public String fenye(Integer pageNum,Model model){
if(pageNum==null){
pageNum=1;
}
Integer pageSize=5;
PageInfo<Emp> p=empService.fenye(pageNum,pageSize);
model.addAttribute("p", p);
return "list";
}
}
7、Service层
public interface EmpService {
PageInfo<Emp> fenye(Integer pageNum, Integer pageSize);
}
8、ServiceImpl层 Service的实现
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpMapper empMapper;
@Override
public PageInfo<Emp> fenye(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum,pageSize);
List<Emp> list=empMapper.findAll();
PageInfo<Emp> p=new PageInfo<Emp>(list);
return p;
}
}
9、Dao层 (EmpMapper)
public interface EmpMapper {
List<Emp> findAll();
}
10、Mapper.xml (EmpMapper.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.bgs.dao.EmpMapper">
<resultMap type="cn.bgs.pojo.Emp" id="emp_dept">
<id column="id" property="id"/>
<result column="ename" property="eName"/>
<result column="sal" property="sal"/>
<result column="did" property="did"/>
<association property="dept" javaType="cn.bgs.pojo.Dept">
<id property="did" column="did"/>
<result property="dname" column="dname"/>
</association>
</resultMap>
<!-- 分页插件查询 List<Emp> findAll(); 两表连查-->
<select id="findAll" resultMap="emp_dept">
select * from emp e,dept d where e.did=d.did
</select>
</mapper>
11、数据库表
(一)员工信息emp表
(二)员工部门信息dept表