当前问题:我们目前正试图从数据库中获取超过 500k(五十万)条记录,然后我必须在 JSP 上每页显示 50 条记录(使用 struts 2)。问题是加载需要很长时间,甚至需要一些时间。一旦加载,我们就可以顺利导航。
需要的解决方案:喜欢根据分页定义的记录加载有限的记录,例如:每页最多 100 条记录。有没有人在 struts 或类似框架中实现了类似的功能?我也不想一次获得所有记录。请指导我如何实施?
当前问题:我们目前正试图从数据库中获取超过 500k(五十万)条记录,然后我必须在 JSP 上每页显示 50 条记录(使用 struts 2)。问题是加载需要很长时间,甚至需要一些时间。一旦加载,我们就可以顺利导航。
需要的解决方案:喜欢根据分页定义的记录加载有限的记录,例如:每页最多 100 条记录。有没有人在 struts 或类似框架中实现了类似的功能?我也不想一次获得所有记录。请指导我如何实施?
您可以使用 jquery 数据表。它具有用于 ajax 加载的分页功能。因此,当您单击下一页时,它会从数据库中加载下一条记录。为此,您需要添加 Jquery 库,如jquery.dataTables.min.js
, jquery-ui-1.8.10.custom.min.js
, jquery-1.4.4.min.js
, jquery-1.4.2.min.js
,jquery-ui-1.8.10.custom.css
JSP代码
<table id="reqAllQueriesTable" cellpadding="0" cellspacing="0" border="0" class="display" style="width: 100%;">
<thead>
<tr>
<th style="display: none"></th>
<th> </th>
<th><spring:message code='Name'/></th>
<th><spring:message code='runDate'/></th>
th><spring:message code='noOfRec'/></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
JavaScript
var oTable = $('#reqAllQueriesTable')
.dataTable(
{
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "query/getQuery",
"bPaginate" : true,
"bScrollCollapse" : true,
"iDisplayLength" : 10,
"bFilter" : true,
"bJQueryUI" : true,
"sPaginationType" : "full_numbers",
"oLanguage" : {
"sLengthMenu" : "Display _MENU_ records per page",
"sZeroRecords" : "No Queries found",
"sInfo" : "Showing _START_ to _END_ of _TOTAL_ records",
"sInfoEmpty" : "Showing 0 to 0 of 0 records",
"sInfoFiltered" : "(filtered from _MAX_ total records)"
},
"aaSorting" : [ [ 3, "desc" ] ],
"aoColumns" : [/*Id*/{
"bSearchable" : false,
"bVisible" : false
},
/*Id RadioButton*/{
"bSearchable" : false,
"bSortable" : false
},
/*Name*/null,
/*Run Date*/{
"sType" : "date"
},
{
"fnRender" : function(oObj) {
return '<input type="radio" name="Id" value= "' + oObj.aData[0] + " "/>';
},
"aTargets" : [ 1 ]
}]
});
您可以根据某个参数在每个请求中仅获取 100 条记录。一次获取所有记录需要很长时间。我已经使用查询和一些参数实现了分页。