一、在Maven项目的pom.xml文件中导入PageHelper的jar包依赖
<!-- mybatis-miemiedev依赖 -->
<dependency>
<groupId>com.github.miemiedev</groupId>
<artifactId>mybatis-paginator</artifactId>
<version>1.2.9</version>
</dependency>
<!-- pagehelper依赖 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
二、在applicationContext-dao.xml文件中添加PageHelper的配置(配置Mybatis拦截器插件)
<!-- 3.配置mybatis框架核心对象SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置MyBaties全局配置文件:mybatis-configure.xml -->
<property name="configLocation" value="classpath:mybatis/mybatis-configure.xml"/>
<!-- 配置Mybatis拦截器插件 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<!-- 使用下面的方式配置参数,一行配置一个 -->
<value>
helperDialect=mysql
reasonable=true
</value>
</property>
</bean>
</array>
</property>
</bean>
三、在数据持久层(dao层),只要定义查询的方法即可(CompanyDao)
List<Company> getCompanyList();
四、编写SQL的映射文件(CompanyDao.xml)
<!-- 获取公司的数据 -->
<select id="getCompanyList" resultMap="BaseResultMap">
SELECT * FROM `company`
</select>
五、在业务逻辑层(service层),编写查询的方法及使用PageHelper实现分页的方法(CompanyService)
List<Company> findCompanyList();
PageInfo<Company> findCompanyByPaging(Integer pageNum, Integer pageSize);
六、在service实现类,封装公司的数据信息(CompanyServiceImpl)
@Override
public PageInfo<Company> findCompanyByPaging(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<Company> companyList = companyDao.getCompanyList();
PageInfo<Company> pageInfo = new PageInfo<Company>(companyList);
return pageInfo;
}
七、在视图表现层(Controller层),实现对数据的处理,并与前端进行交互(CompanyController)
@RequestMapping("/companyList")
public String loadCompany(HttpServletRequest request, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "5") Integer pageSize) {
PageInfo<Company> pageInfo = companyService.findCompanyByPaging(pageNum, pageSize);
request.setAttribute("pageInfo", pageInfo);
return "company/company-list";
}
八、分页辅助页面(page.jsp)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<div class="pull-left">
<div class="form-group form-inline">
总共${pageInfo.pages} 页,共${pageInfo.total} 条数据。
</div>
</div>
<div class="box-tools pull-right">
<ul class="pagination" style="margin: 0px;">
<li>
<a href="javascript:goPage(1)" aria-label="Previous">首页</a>
</li>
<li><a href="javascript:goPage(${pageInfo.prePage})">上一页</a></li>
<c:forEach begin="1" end="${pageInfo.pages}" var="i">
<li class="paginate_button ${pageInfo.pageNum==i ? 'active':''}">
<a href="javascript:goPage(${i})">${i}</a>
</li>
</c:forEach>
<li><a href="javascript:goPage(${pageInfo.nextPage})">下一页</a></li>
<li>
<a href="javascript:goPage(${pageInfo.pages})" aria-label="Next">尾页</a>
</li>
</ul>
</div>
<form id="pageForm" action="${param.pageUrl}" method="post">
<input type="hidden" name="pageNum" id="pageNum">
</form>
<script type="text/javascript">
function goPage(pageNum) {
$("#pageNum").val(pageNum);
$("#pageForm").submit();
}
</script>
</body>
</html>
九、公司列表页面信息展示(company-list.jsp)
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="url" value="${pageContext.request.contextPath}"/>
<%@ include file="../base.jsp"%>
<!DOCTYPE html>
<html>
<head>
<!-- 页面meta -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>企业列表管理</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport">
<!-- 页面meta -->
<script src="../plugins/jQuery/jquery-2.2.3.min.js"></script>
<script type="text/javascript">
function deleteById() {
var id = getCheckId();
if (id) {
if (confirm("你确认要删除此条记录吗?")) {
location.href="${url}/company/removeCompany?id=" + id;
}
} else {
alert("请勾选待处理的记录,且每次只能勾选一个")
}
}
</script>
</head>
<body>
<div id="frameContent" class="content-wrapper" style="margin-left:0px;">
<section class="content-header">
<h1>企业管理<small>企业列表</small>
</h1>
<ol class="breadcrumb">
<li><a href="all-admin-index.html"><i class="fa fa-dashboard"></i> 首页</a></li>
</ol>
</section>
<!-- 内容头部 /-->
<!-- 正文区域 -->
<section class="content">
<!-- .box-body -->
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">列表</h3>
</div>
<div class="box-body">
<!-- 数据表格 -->
<div class="table-box">
<!--工具栏-->
<div class="pull-left">
<div class="form-group form-inline">
<div class="btn-group">
<button type="button" class="btn btn-default" title="新建" style="background-color: #F18A8E" onclick='location.href="${url}/company/toPlusCompany"'><i class="fa fa-file-o"></i> 新建</button>
<button type="button" class="btn btn-default" title="删除" style="background-color: #FCF37E" onclick='deleteById()'><i class="fa fa-trash-o"></i> 删除</button>
<button type="button" class="btn btn-default" title="刷新" style="background-color: #8ED4A2" onclick="window.location.reload();"><i class="fa fa-refresh"></i> 刷新</button>
</div>
</div>
</div>
<div class="box-tools pull-right">
<div class="has-feedback">
<input type="text" class="form-control input-sm" placeholder="搜索">
<span class="glyphicon glyphicon-search form-control-feedback"></span>
</div>
</div>
<!--工具栏/-->
<!--数据列表-->
<table id="dataList" class="table table-bordered table-striped table-hover dataTable" style="background-color: lime">
<thead>
<tr>
<th class="" style="padding-right:0px;"></th>
<th class="sorting">企业名称</th>
<th class="sorting">所在地</th>
<th class="sorting">地址</th>
<th class="sorting">企业法人</th>
<th class="sorting">联系方式</th>
<th class="sorting">所属行业</th>
<th class="sorting">状态</th>
<th class="sorting">余额</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${pageInfo.list}" var="company" varStatus="list">
<tr ${list.count % 2 == 0 ? "style='background-color:orangered'" : "style='background-color:red'"}>
<td><input name="ids" value="${company.id}" type="checkbox"></td>
<td>${company.name}</td>
<td>${company.city}</td>
<td>${company.address}</td>
<td>${company.representative}</td>
<td>${company.phone}</td>
<td>${company.industry}</td>
<td>${company.state == 0 ? '未审核' : '已审核'}</td>
<td class="text-center">${company.balance}</td>
<td class="text-center">
<button type="button" class="btn bg-olive btn-xs" onclick='location.href="${url}/company/toUpdateCompany?id=${company.id}"'>编辑</button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
<div class="box-footer">
<jsp:include page="../common/page.jsp">
<jsp:param value="${url}/company/companyList" name="pageUrl"/>
</jsp:include>
</div>
</div>
</section>
</div>
</body>
</html>
十、公司列表信息使用PageHelper分页展示效果
1.公司列表第一页的信息
2.公司列表第二页的信息
3.公司列表第三页的信息