1

以下是我的 JSP 中分页数据表的代码:

$(document).ready( function() {
    $('#paginatedTable').dataTable( {
        "bServerSide" :true,
        "sAjaxSource" :"/JQueryPagination/Myservlet",
        "bProcessing" :false,
        "sPaginationType" :"full_numbers",
        "bJQueryUI" :false,
        "aoColumns" : [ {
            "mDataProp" :"Name"
        }, {
            "mDataProp" :"Address"
        }, {
            "mDataProp" :"Town"
        } ]
    });
});

在我的 servlet 中,我有一个查询,它从数据库表中获取整个数据,比如 company,它在结果集中返回一百万行。

List<Company> companies =  fetchCompleteCompanyDataFromDb(); 

然后过滤此结果集,如下所示:

List<Company>filteredCompanyList = companies.subList(iDisplayStart,DisplayStart+iDisplayLength);

filteredCompanyList是我在数据表中显示的列表,有 10 行。当用户单击分页的“下一步”按钮时,将触发一个新请求,该请求将再次获取完整的公司数据,然后过滤第二页的下 10 条记录。简而言之,每当用户单击下一个按钮时,都会触发获取一百万条记录的查询。

我需要知道当用户点击下一个按钮时,是否有办法只获取接下来要显示的10 条记录。

4

2 回答 2

2

感谢您的意见..我能够解决这个问题。我的要求是一次只获取 10 条记录。当用户单击下一页时,应触发一个新请求,该请求将获取接下来要显示的 10 行。通过这种方式,我可以实现性能更好的分页。如果发现,有两个变量控制分页。它们是“iTotalRecords”和“iTotalDisplayRecords”。我将查询表以获取表中整行的计数并将其设置为“iTotalRecords”。然后我分配'iTotalDisplayRecords = iTotalRecords'。这样我会错误地通知插件我有整个行列表。但是在变量“iDisplayStart”和“iDisplayLength”的帮助下,我只会从数据库中获取所需的行数& 以 json 格式写回响应。再次感谢大家。

于 2014-02-03T07:12:29.490 回答
1

这个问题的解决方案很可能在于 fetchCompleteCompanyDataFromDb() 是如何实现的。根据您执行此操作的方式,您可能希望实现一个新功能:

fetchPageFromDb(int pageNumber, int pageSize)

很难建议任何特定的实现,因为我不知道 fetchCompleteCompanyDataFromDb() 是如何工作的,所以我假设您的分页需要作为形成查询的代码的一部分来实现。谷歌上关于如何在 SQL 中实现分页并报告你所学的内容。

于 2014-01-30T18:56:41.917 回答