当前位置: 首页 > 面试题库 >

分页在java中?

邴俊达
2023-03-14
问题内容

我希望数字以这种格式显示。

1 2 3 4 5 ^
如果我按5,则应该显示5到10

5 6 7 8 9 10

直到最大记录可用。我只想知道如何显示数字。


问题答案:

通常,您希望数据库为分页和排序工作繁重。例如,使用MySQL,您可以通过添加以下内容按日期对结果页面进行排序

ORDER BY date ASC LIMIT 5,5

到SQL查询的末尾。如果您使用休眠模式,则可以使用标准API以独立于供应商的方式执行此操作:

List<MyDomainClass> results = (List<MyDomainClass>) getSession()     
.createCriteria(MyDomainClass.class)
.setFirstResult(5)
.setMaxResults(5)
.addOrder(Order.asc("date"))
.list();

要显示分页导航,您还需要计算结果总数以知道有多少页:

int count = (int) getSession()     
.createCriteria(MyDomainClass.class)
.setProjection(Projections.rowCount())
.list().get(0);

您可以为两个搜索添加限制,例如,当您要过滤姓氏时,可以添加:

.add(Restrictions.eq("lastname", "Smith")

(这需要同时添加到计数查询和列表查询中)。

当您知道结果总数,页面大小和当前页数时,您可以计算出结果范围,如下所示:

// TODO: execute the count query here to determine totalResults
int totalPages = Math.ceil(totalResults / pageSize);
// show first page by default
int firstResult = 0;
if (currentPage >= 0 && currentPage < totalPages) {
    firstResult = currentPage * pageSize;    
}
// the number of items might be less than the page size (i.e. on the last page)
int count = Math.min(pageSize, totalResults - firstResult);        
// TODO: execute the list query here to get a page of data

显示导航的方式由您决定。一些框架为此具有标准组件。否则,您将不得不考虑一种处理大量页面的方法。一种常见的方法是显示例如10个页码的范围,以及向前/向后跳转以开始/跳转到结束链接。

希望这可以帮助。



 类似资料:
  • 问题内容: 我知道使用这种方法来实现分页是一种不好的做法,因为当数据变大时,这会消耗大量内存。解决此问题的一种方法是按字段使用自然顺序: 问题是-我是mongo的新手,不知道什么是最好的方式 问题答案: 您正在谈论的概念可以称为“转发分页”。这有一个很好的理由,与使用和修饰符不同,它不能用于“返回”上一页或实际上“跳”至特定页面。至少不需要花费很多精力来存储“可见的”或“发现的”页面,因此,如果您

  • 我有一个dynamoDb表,该表有两列, 我的主分区键是-pageId(String), 我还有一个GSI-pageContainer(String)。 我正在使用DynamoDBMapper查询/扫描我的表, 我正在尝试在DynamoDb中实现分页, 我了解DynamoDb中的分页工作在ExclusiveStarKey和LastEvaluatedKey上。 ExclusiveStartKey在第

  • 问题内容: 在我的项目中,我需要使用分页查询数据库,并为用户提供基于当前搜索结果进行查询的功能。像极限之类的东西,我找不到与Node.js一起使用的东西。我的后端是mysql,我正在编写rest api。 问题答案: 您可以尝试类似的操作(假设您使用Express 4.x)。 使用GET参数(此处的page是所需的页面结果数,而npp是每页的结果数)。 在此示例中,查询结果设置在响应有效负载的字段

  • 我已经通读了AWS关于分页的文档: 根据他们的文件规定: 在响应中,DynamoDB返回限制值范围内的所有匹配结果。例如,如果发出限制值为6且没有筛选器表达式的查询或扫描请求,DynamoDB将返回表中与请求中指定的键条件匹配的前六项(或者在没有筛选器的扫描情况下仅返回前六项) 这意味着,给定我有一个名为的表,其属性称为(可以接受从到的任何数值),我可能会遇到以下难题: 客户提出请求,思考

  • 我对Laravel相当陌生,现在我需要在我的项目中实现ajax功能。我了解了如何通过ajax显示和创建文章,但当我需要列出它们时会出现问题。这有两个子问题。 显示我所做的分页文章 和第二个,它正在与新的一组文章切换到下一页。我知道如何使用Laravel的分页来完成此操作,但在本例中,分页也应该使用Ajax来完成。 我从ArticlesController获取了一些数据,它发送了如下所示的json响

  • Django提供了一些类来帮助你管理分页的数据 -- 也就是说,数据被分在不同页面中,并带有“上一页/下一页”标签。这些类位于django/core/paginator.py中。 示例 向Paginator提供对象的列表,以及你想为每一页分配的元素数量,它就会为你提供访问每一页上对象的方法: >>> from django.core.paginator import Paginator >>> o