Mybatis 数据库物理分页插件 PageHelper 前端实现

本文介绍如何利用MyBatis的PageHelper插件实现前后端分离的分页功能,通过示例展示了主页面与分页列表的设计方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继上一篇文章     

Mybatis 数据库物理分页插件 PageHelper          

只是完成了 PageHelper 程序后台配置,前端的写法在这里举例,本人的菜鸟写法,欢迎大神指点。


首先,因为SpringMVC 的框架返回值是返回页面的形式,所以在分页的时候需要写两个页面,一个是列表的主页面,另一个是分页的专用页面,列表的主页面中,把列表这一部分用div包含起来,然后在分页的时候,让div 重新去加载div包起来的部分,即可实现分页,下面进行举例:


分页的主页面实例:

复制代码
    <%@page import="com.util.sms.PaginationContext"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib prefix='fmt' uri="http://java.sun.com/jsp/jstl/fmt" %>  
    
    
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
	response.setHeader("Pragma", "no-cache");
	response.setHeader("Cache-Control", "no-cache");
	response.setDateHeader("Expires", 0);
%>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>温馨提示</title>
<link rel="stylesheet" type="text/css" href="bootstrap-3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="bootstrap-3.3.7/css/bootstrap-theme.min.css">


<script src="bootstrap-3.3.7/js/bootstrap.min.js" type="text/javascript"></script>
<script src="js/jquery-3.1.1.min.js" type="text/javascript"></script>
<script src="js/json2.js" type="text/javascript"></script>


<script type="text/javascript">var basePath = "<%=basePath%>";</script>


</head>


<body>






<div id="div_list">
<input id="pageNum"  style="display: none" value="${pageMum }">
<input id="pageSize"  style="display: none" value="${pageSize }">
<table class="table table-bordered">
  <thead>
  	<tr>
  		<th>姓名</th>
  		<th>年龄</th>
  		<th>小组负责人</th>
  		<th>手机号码</th>
  		<th>邮箱</th>
  		<th>学校名称</th>
  		<th>专业</th>
  		<th>学历</th>
  		<th>年级</th>
  		<th>研究经历</th>
  		<th>获奖情况</th>
  		<th>组编号</th>
  		<th>注册时间</th>
  	</tr>
  </thead>
  <tbody>
  <c:forEach var="list" items="${tsignList}">
  	<tr>
  		
  		<td>${list.memname}</td>
  		<td>${list.memage}</td>
  		<td>
  		<c:choose>
		   <c:when test="${list.isleader == '1'}">  
		        是    
		   </c:when>
		   <c:otherwise> 
		   			   </c:otherwise>
		</c:choose>
  		</td>
  		<td>${list.memphone}</td>
  		<td>${list.mememail}</td>
  		<td>${list.memschool}</td>
  		<td>${list.memmajor}</td>
  		<td>
  		<c:choose>
		   <c:when test="${list.memeducation == '1'}">  
		        本科
		   </c:when>
		   <c:when test="${list.memeducation == '2'}">  
		        硕士
		   </c:when>
		   <c:when test="${list.memeducation == '3'}">  
		        博士
		   </c:when>
		</c:choose>
  		</td>
  		<td>${list.memgrade}</td>
  		<td>${list.memexperience}</td>
  		<td>${list.memwin}</td>
  		<td>${list.groupcode}</td>
  		<td><fmt:formatDate value="${list.signdate}"   pattern="yyyy-MM-dd HH:mm:ss" type="date" dateStyle="long" />  </td>
  		
  	</tr>
  	</c:forEach>
  </tbody>
</table>






</div>


<script type="text/javascript">
//上一页
function prePage(pages){
var pageNum = $("#pageNum").val();
pageNum = Number(pageNum) -1;
	if(1>Number(pageNum)){
		pageNum = 1;
		document.getElementById("a_prePage").style.display = "none";
		document.getElementById("a_nextPage").style.display = "";
		return false;
	}else if(Number(pageNum)>1 && Number(pageNum) <Number(pages)){
		document.getElementById("a_prePage").style.display = "";
		document.getElementById("a_nextPage").style.display = "";
	}else if(1 == Number(pageNum)){
		document.getElementById("a_prePage").style.display = "none";
		document.getElementById("a_nextPage").style.display = "";
	}
	$("#div_list").html("数据正在玩命加载中......");
	$("#div_list").load("getSignListPage.do?page="+pageNum);
}
//下一页
function nextPage(pages){
var pageNum = $("#pageNum").val();
pageNum = Number(pageNum) +1;
	if(Number(pageNum) <=1){
		document.getElementById("a_nextPage").style.display = "";
		document.getElementById("a_prePage").style.display = "none";
	}else if(Number(pageNum) >1 && Number(pageNum) < Number(pages)){
		document.getElementById("a_nextPage").style.display = "";
		document.getElementById("a_prePage").style.display = "";
	}else if(Number(pageNum) == Number(pages)){
		document.getElementById("a_nextPage").style.display = "none";
		document.getElementById("a_prePage").style.display = "";
	}else if(Number(pageNum) > Number(pages)){
		pageNum = pages;
		return false;
	}
	$("#div_list").html("数据正在玩命加载中......");
	$("#div_list").load("getSignListPage.do?page="+pageNum);
}
//点击去某一个页面
function goPage(goNum,pages){
	if(Number(goNum) < 1 ){
		goNum = 1;
		document.getElementById("a_nextPage").style.display = "none";
		document.getElementById("a_prePage").style.display = "";
	}else if(Number(goNum) > 1 && Number(goNum) < Number(pages)){
		document.getElementById("a_nextPage").style.display = "";
		document.getElementById("a_prePage").style.display = "";
	}else if(Number(goNum) >=Number(pages)){
		goNum = pages;
		document.getElementById("a_nextPage").style.display = "none";
		document.getElementById("a_prePage").style.display = "";
	}else if(1 == Number(goNum)){
		document.getElementById("a_nextPage").style.display = "";
		document.getElementById("a_prePage").style.display = "none";
	}
	$("#div_list").html("数据正在玩命加载中......");
	$("#div_list").load("getSignListPage.do?page="+goNum);
}
</script>
	 <nav aria-label="Page navigation">
	  <ul class="pagination">
	    <li>
	      <a style="display: none" id="a_prePage" href="javascript:void(0);" onclick="prePage(${page.pages})"  aria-label="Previous">
	        <span aria-hidden="true">上一页</span>
	      </a>
			    </li>
			    	<c:forEach begin="1" end="${page.pages }" var="p">
			    		<li><a onclick="goPage(${p},${page.pages })"   href="javascript:void(0);" >${p}</a></li>
			    	</c:forEach>
			    <li>
	      <a id="a_nextPage" href="javascript:void(0);" onclick="nextPage(${page.pages})"  aria-label="Next">
	        <span aria-hidden="true">下一页</span>
	      </a>
	    </li>
	  </ul>
	</nav>


</body>


</html>
   


分页的列表页面实例:(只是把主页面的列表部分拿出来到一个新的页面,加载的时候,仅仅加载这一部分)


复制代码
   <%@page import="com.util.sms.PaginationContext"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib prefix='fmt' uri="http://java.sun.com/jsp/jstl/fmt" %>  
    
    
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
	response.setHeader("Pragma", "no-cache");
	response.setHeader("Cache-Control", "no-cache");
	response.setDateHeader("Expires", 0);
%>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>温馨提示</title>
<link rel="stylesheet" type="text/css" href="bootstrap-3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="bootstrap-3.3.7/css/bootstrap-theme.min.css">


<script src="bootstrap-3.3.7/js/bootstrap.min.js" type="text/javascript"></script>
<script src="js/jquery-3.1.1.min.js" type="text/javascript"></script>
<script src="js/json2.js" type="text/javascript"></script>


<script type="text/javascript">var basePath = "<%=basePath%>";</script>


</head>


<body>




<input id="pageNum"  style="display: none" value="${pageMum }">
<input id="pageSize"  style="display: none" value="${pageSize }">
<table class="table table-bordered">
  <thead>
  	<tr>
  		<th>姓名</th>
  		<th>年龄</th>
  		<th>小组负责人</th>
  		<th>手机号码</th>
  		<th>邮箱</th>
  		<th>学校名称</th>
  		<th>专业</th>
  		<th>学历</th>
  		<th>年级</th>
  		<th>研究经历</th>
  		<th>获奖情况</th>
  		<th>组编号</th>
  		<th>注册时间</th>
  	</tr>
  </thead>
  <tbody>
  <c:forEach var="list" items="${tsignList}">
  	<tr>
  		
  		<td>${list.memname}</td>
  		<td>${list.memage}</td>
  		<td>
  		<c:choose>
		   <c:when test="${list.isleader == '1'}">  
		        是    
		   </c:when>
		   <c:otherwise> 
		   			   </c:otherwise>
		</c:choose>
  		</td>
  		<td>${list.memphone}</td>
  		<td>${list.mememail}</td>
  		<td>${list.memschool}</td>
  		<td>${list.memmajor}</td>
  		<td>
  		<c:choose>
		   <c:when test="${list.memeducation == '1'}">  
		        本科
		   </c:when>
		   <c:when test="${list.memeducation == '2'}">  
		        硕士
		   </c:when>
		   <c:when test="${list.memeducation == '3'}">  
		        博士
		   </c:when>
		</c:choose>
  		</td>
  		<td>${list.memgrade}</td>
  		<td>${list.memexperience}</td>
  		<td>${list.memwin}</td>
  		<td>${list.groupcode}</td>
  		<td><fmt:formatDate value="${list.signdate}"   pattern="yyyy-MM-dd HH:mm:ss" type="date" dateStyle="long" />  </td>
  		
  	</tr>
  	</c:forEach>
  </tbody>
</table>




</body>


</html>
复制代码
Springmvc 控制器(返回主页面的控制器):

复制代码
   	@RequestMapping(value="/getSignLists.do",method={RequestMethod.GET})
	@ResponseBody
	public ModelAndView getSignLists(@Param("tSign") TSign my,@RequestParam(required=true,defaultValue="1") Integer page,
            @RequestParam(required=false,defaultValue="10") Integer pageSize) 
			throws Exception{
		
		
		logger.info("查询已报名的用户方法。。start。。。");
		PaginationContext.setPageNum(page);
		PaginationContext.setPageSize(pageSize);
		ModelAndView mv = new ModelAndView();
		
		//分页操作
		PageHelper.startPage(PaginationContext.getPageNum(), PaginationContext.getPageSize());
        List<TSign> list = signService.getTSignList(my);
		
		mv.addObject("tsignList", list);
		mv.addObject("pageMum", PaginationContext.getPageNum());
		mv.addObject("pageSize", PaginationContext.getPageSize());
		mv.addObject("page", new PageBean<TSign>(list));
		mv.setViewName("signIndex");
			
		
		logger.info("查询已报名的用户方法。。end。。。");
		return mv;
		
	}
复制代码
返回分页页面的控制器:

复制代码
    @RequestMapping(value="/getSignListPage.do",method={RequestMethod.GET})
	@ResponseBody
	public ModelAndView getSignListPage(@Param("tSign") TSign my,@RequestParam(required=true,defaultValue="1") Integer page,
            @RequestParam(required=false,defaultValue="10") Integer pageSize) 
			throws Exception{
		
		
		logger.info("查询已报名的用户方法。。start。。。");
		PaginationContext.setPageNum(page);
		PaginationContext.setPageSize(pageSize);
		ModelAndView mv = new ModelAndView();
		
		//分页操作
		PageHelper.startPage(PaginationContext.getPageNum(), PaginationContext.getPageSize());
        List<TSign> list = signService.getTSignList(my);
		
		mv.addObject("tsignList", list);
		mv.addObject("pageMum", PaginationContext.getPageNum());
		mv.addObject("pageSize", PaginationContext.getPageSize());
		mv.addObject("page", new PageBean<TSign>(list));
		mv.setViewName("signLists");
			
		
		logger.info("查询已报名的用户方法。。end。。。");
		return mv;
		
	}
复制代码

这里只是所有的代码,大家在使用可以的时候,可以进行相应的封装,以便项目中可以更好的使用。

这里只是作为记录,便于之后查看。

这里的方法比较笨拙,但是可以实现功能,欢迎大家提自己的意见,我这边会进行改进。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值