【发布时间】:2017-02-15 14:35:47
【问题描述】:
我需要对从数据库中检索到的数据(项目)进行分页。 UI 还包含搜索选项和数据量,顺序也取决于搜索条件。
假设一个客户端使用一些搜索条件发送请求并获得 60 个结果。客户端会看到从 1 到 maxPageSize(默认为 25)的项目。如果请求第二页 - 将显示 26-50 项。 问题是目前我无法获得最大结果的数量并且无法显示 maxPage 的数量。
我看到了这个问题的 2 个解决方案:
- 第二次查询数据库,参数相同但没有 分页并获取项目的数量。
- 从数据库中检索所有项目, 通过搜索条件在后端代码中过滤它们并发送给客户端。
问题是:
1) 一般而言,哪种操作成本更低?
2) 如果有更好的解决方案,还能做些什么来解决这类任务?
附:用 Java 编写的后端代码,查询通过 JDBC 发送到 Oracle 11g DB。
---编辑---
我已经通过这种方式解决了这个问题:
WITH FINAL_RESULT AS
(SELECT SORTED_ITEMS.*,
ROWNUM RN
FROM (sorted basic query with searches))
SELECT FINAL_RESULT.*,
(SELECT COUNT(*) FROM FINAL_RESULT) ITEMS_COUNT
FROM FINAL_RESULT
WHERE RN BETWEEN ? AND ?
【问题讨论】:
-
为什么不能得到结果总数?但更重要的是,为什么你甚至需要它?只需查询 26 个结果,如果返回 26,则显示下一个按钮,否则将其变灰。
-
FE上的设计需要1、2、3 ... 50这样的分页
标签: java oracle pagination