长达好几个月的未接触pageHelper 今天写分页的时候居然不知道怎么写了 不得不说好记性不如烂笔头 还是做笔记留下会更加的深刻
列出一些基本属性
/**
* 对Page<E>结果进行包装
* <p/>
* 新增分页的多项属性,主要参考:http://bbs.csdn.net/topics/360010907
*
* @author liuzh/abel533/isea533
* @version 3.3.0
* @since 3.2.2
* 项目地址 : http://git.oschina.net/free/Mybatis_PageHelper
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public class PageInfo<T> extends PageSerializable<T> {
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总页数
private int pages;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
前端
效果图
代码
<table class="table table-border table-bordered table-bg">
<thead>
<tr>
<th scope="col" colspan="10">员工列表</th>
</tr>
<tr class="text-c">
<th width="25"><input type="checkbox" name="" value=""></th>
<th width="40">ID</th>
<th width="150">用户名</th>
<th width="90">手机</th>
<th width="150">邮箱</th>
<th width="80">性别</th>
<th width="130">部门</th>
<th width="100">创建人</th>
<th width="100">创建时间</th>
<th width="100">操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${pageInfo.list}" var="emp">
<tr class="text-c">
<td><input type="checkbox" value="1" name=""></td>
<td>${emp.id}</td>
<td>${emp.username}</td>
<td>${emp.mobile}</td>
<td>${emp.email}</td>
<td>${emp.sex==1?"男":"女"}</td>
<td>${emp.deptno}</td>
<td>${emp.createUser}</td>
<td>
<fmt:formatDate value="${emp.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
</td>
<td class="td-manage"><a style="text-decoration:none" onClick="admin_stop(this,'10001')" href="javascript:;" title="停用"><i class="Hui-iconfont"></i></a> <a title="编辑" href="javascript:;" οnclick="admin_edit('管理员编辑','admin-add.html','1','800','500')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont"></i></a> <a title="删除" href="javascript:;" οnclick="admin_del(this,'1')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont"></i></a></td>
</tr>
</c:forEach>
</tbody>
</table>
<jsp:include page="../common/page.jsp"/>
这里把分页条给分离开 增加复用性
page.jsp 代码如下
<body>
<%--显示分页导航条--%>
<div id="test1"></div>
<script TYPE="text/javascript">
layui.use('laypage',function () {
var laypage = layui.laypage;
laypage.render({
elem: 'test1'
,count: '${pageInfo.total}'
,limit: '${pageInfo.pageSize}'
,curr: '${pageInfo.pageNum}'
,layout: [ 'prev', 'page', 'next', 'limit', 'skip','count']
,limits:[5,10,20]
,jump: function(obj,first){
console.log(obj)
if (!first){
location.href="${pageContext.request.contextPath}/${url}?pageNum="+obj.curr+"&pageSize="+obj.limit;
}
}
});
});
</script>
</body>
后端
page实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Page {
private Integer pageNum =1;
private Integer pageSize=5;
}
Controller
@RequestMapping("/getEmppage")
public String getEmpPage( ModelMap map, Page page){
PageInfo<Emp> pageInfo = empService.getPage(page);
map.put("pageInfo",pageInfo);
map.put("url" ,"emp//getEmppage");
pageInfo.getPages();
return "emp/EmpList";
}
service
getPage()
public PageInfo<T> getPage(Page page); //分页
Impl
public PageInfo<T> getPage(Page page) {
/**
* 开始分页
*
* @param pageNum 页码
* @param pageSize 每页显示数量
*/
PageHelper.startPage(page.getPageNum(),page.getPageSize());
List list = baseMapper().getList();
return new PageInfo<T>(list);
}
多种重载方法
补充:
Mapper
List<Emp> getList(); //分页
mapper.xml
sql 根据需要编写
<select id="getList" resultMap="empResulet">
SELECT
e.*,
(
SELECT
cu.username
FROM
t_emp cu
WHERE
cu.id = e.create_user
)as create_username,
(
select up.username from t_emp up where up.id = e.update_user
) as update_username
FROM
t_emp e
order by create_time desc
</select>