前端代码
<!-- 分页部分start -->
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
<div>
总条数:<span th:text="${page.getTotalCount()}"></span>
总页数:<span th:text="${page.getTotalPageCount()}"></span>
当前页码:<span th:text="${page.getCurrentPage()}"></span>
</div>
</li>
<li>
<a th:href="@{/permission/applyList/(currentPage=1,pageSize=${page.pageSize} )}" aria-label="Previous">
<span aria-hidden="true">«首页</span>
</a>
</li>
<li>
<a th:href="@{/permission/applyList/(currentPage=${page.currentPage-1},pageSize=${page.pageSize} )}" aria-label="Previous">
<span aria-hidden="true">«上一页</span>
</a>
</li>
<li>
<a th:href="@{/permission/applyList/(currentPage=${page.currentPage+1},pageSize=${page.pageSize} )}" aria-label="Next">
<span aria-hidden="true">下一页»</span>
</a>
</li>
<li>
<a th:href="@{/permission/applyList/(currentPage=${page.totalPageCount},pageSize=${page.pageSize} )}" aria-label="Next">
<span aria-hidden="true">尾页»</span>
</a>
</li>
<li>
<!-- 调整pageSize start -->
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" th:text=" '每页显示:' + ${page.pageSize}">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a th:href="@{/permission/applyList/(currentPage=${page.currentPage},pageSize=5 )}">5</a></li>
<li><a th:href="@{/permission/applyList/(currentPage=${page.currentPage},pageSize=20 )}">10</a></li>
<li><a th:href="@{/permission/applyList/(currentPage=${page.currentPage},pageSize=50 )}">50</a></li>
<li><a th:href="@{/permission/applyList/(currentPage=${page.currentPage},pageSize=100 )}">100</a></li>
<li><a th:href="@{/permission/applyList/(currentPage=${page.currentPage},pageSize=500 )}">500</a></li>
</ul>
</div>
<!-- 调整pageSize结束 -->
</li>
</ul>
</nav>
<!-- 分页部分end -->
后端Page<T>对象
package com.haben.hivemetamgr.paging;
import java.util.ArrayList;
import java.util.List;
/**
* 自定义分页组件
*
* @author CJ
* @param <T>
*/
public class Page<T> {
public enum Sort {
ASC, DESC;
}
private List<T> datas = new ArrayList<T>(0);
private boolean hasPreviousPage;
private boolean hasNextPage;
private int totalCount; // 总记录数
private int totalPageCount; // 总页数
private int currentPage = 1; // 当前第几页
private int pageSize = 5; // 每页记录数
private Enum<Sort> sort;
public void gotoPreviousPage() // 向前翻页
{
if (isHasPreviousPage()) {
currentPage = currentPage - 1;
}
}
public void gotoNextPage() // 向后翻页
{
if (isHasNextPage()) {
currentPage = currentPage + 1;
}
}
public void gotoFirstPage() // 跳向首页
{
currentPage = 1;
}
public void gotoLastPage() // 跳向尾页
{
currentPage = totalPageCount;
}
public List<T> getDatas() {
return datas;
}
public void setDatas(List<T> datas) {
this.datas = datas;
}
public boolean isHasPreviousPage() {
if (currentPage > 1) {
hasPreviousPage = true;
} else {
hasPreviousPage = false;
}
return hasPreviousPage;
}
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
public boolean isHasNextPage() {
if (currentPage < getTotalPageCount()) {
hasNextPage = true;
} else {
hasNextPage = false;
}
return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getTotalPageCount() {
if (totalCount % pageSize == 0) {
totalPageCount = totalCount / pageSize; // 总记录数 / 每页显示的数量 = 总页数
} else {
totalPageCount = totalCount / pageSize + 1; // 总记录数 / 每页显示的数量 =
// 总页数+1
}
return totalPageCount;
}
public void setTotalPageCount(int totalPageCount) {
this.totalPageCount = totalPageCount;
}
/**
* 防止当前页码的游标越界
*/
public int getCurrentPage() {
if(this.currentPage > this.getTotalPageCount()){
currentPage = this.getTotalPageCount();
}
return this.currentPage <= 0 ? 1 : this.currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public Enum<Sort> getSort() {
return sort;
}
public void setSort(Enum<Sort> sort) {
this.sort = sort;
}
/**
* 冗余一个get方法用于thymeleaf前端反射调用
*/
public boolean getHasPreviousPage() {
if (currentPage > 1) {
hasPreviousPage = true;
} else {
hasPreviousPage = false;
}
return hasPreviousPage;
}
/**
* 冗余一个get方法用于thymeleaf前端反射调用
*/
public boolean getHasNextPage() {
if (currentPage < getTotalPageCount()) {
hasNextPage = true;
} else {
hasNextPage = false;
}
return hasNextPage;
}
}
后端代码 :
/**
* 权限申请页面-审批页面
*/
@RequestMapping(value= {"/applyList","/"})
public String applyList(Model model,Integer status , Page<PrivApprove> page) {
if(status == null) {
status = -1;
}
Page<PrivApprove> privApproves = privilegeService.getPrivList(status, page);
model.addAttribute("privApproves", privApproves.getDatas());
model.addAttribute("page", page);
return "permission/permission_apply_list";
}
DAO层实现,用jdbctemplate,仅做简单演示
int totalCnt = jdbcTemplate.queryForObject("select count(*) from t_priv_approve order by create_time desc", Integer.class);
page.setTotalCount(totalCnt);
int offset = (page.getCurrentPage() - 1) * page.getPageSize();
int limit = page.getPageSize();
list = jdbcTemplate.queryForList("select * from t_priv_approve order by create_time desc limit ? , ?", offset, limit);