[英]How to use pagination in spring mvc and hibernate application
我已经开发了Spring MVC + MySQL和休眠应用程序
它处理超过数千条记录。 在这里,我正在使用dataTable来显示记录。 工作正常。 但是,我的问题是记录加载的性能问题。
当我在数据库服务器中执行查询时,只需几秒钟即可加载成千上万条记录。 但是当我通过我的应用程序使用查询时,需要花费5秒钟以上的时间。
我认为dataTable分页要花费太多时间来加载记录。我如何解决此类问题。 我已经意识到该解决方案仅适用于服务器端分页。
我不知道如何使用服务器端的搜索和排序控件进行诸如“上一页1 2 3 4 5下一页”这样的分页。
因此,请告诉我如何在我的应用程序中显示上述要求的记录。 小片段代码可能对我的知识成长更有用。
由于您正在使用Spring Data JPA,因此请查看非常有用的PagingAndSortingRepository
接口。 本教程将向您展示所有使用方式
我最近实现了它。 按照步骤。
每当调用url时,您就发送data-List元素的总数,然后根据需要使用jstl播种按钮total%10或使用任何算法。
在控制器中发送一个可变的分页,显示多少分页
在休眠状态下使用
example:
query.setFirstResult(1);
query.setMaxResults(10);
在jsp上遵循此。 代码更大。
<c:if test="${not empty pendingSTT}">
<div class="pagination">
<script type="text/javascript">
function setBP(val){
$("#BP").val(val);
}
</script>
<form:form commandName="register" action="/veepropbeta/pendingshare" method="GET">
<form:hidden path="BP" id="BP" />
<ul>
<c:set var="hello" value="0" />
<c:if test="${not empty param['BP']}">
<c:set var="hello" value="${param['BP']}" />
</c:if>
<c:if test="${hello>0}">
<li><a href=""><button class="btn btn-default" onclick="return setBP(this.value-1);" value="${hello}">Prev</button></a></li>
</c:if>
<c:if test="${not empty param['BP']}">
<c:set var="hello" value="${param['BP']}" />
</c:if>
<c:forEach begin="${hello}" end="${pagination-1}" var="limit" varStatus="status" >
<c:if test="${status.count<=10}" >
<li><a href=""> <button class="btn btn-default" style="float: left;" onclick="return setBP(this.value-1);" value="${limit+1}">${limit+1}</button></a></li>
<c:set var="last" value="${status.count}" />
</c:if>
<c:if test="${status.count>10}" >
<c:set var="ending" value="true" />
</c:if>
</c:forEach>
<c:if test="${ending.equals('true')}">
<li><a href=""><button class="btn btn-default" onclick="return setBP(this.value-1);" value="${last+1}">Next</button></a></li>
</c:if>
</ul>
</form:form>
</div>
</c:if>
我遇到了同样的问题,我在我的项目中使用了Smart GWT,它没有分页功能。
因此,剩下的唯一选择就是在服务器端使用分页。 我更改了服务,并使其采用4个参数start
, end
, sort-field
, sort-direction
。
该服务将从数据库的start
到end
的记录数返回,这些记录将按sort-field
(dataTable的列之一)分组,并且sort-direction
为ASC
或DESC
。
这样,用户可以选择他/她希望在每页上看到的记录数(可以是下拉菜单中的预定义值),并且可以从服务中检索这些记录数(通过更改start
和end
,并调用服务) )。 您将不必面对一次性获得数千条记录的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.