数据问题分页:java+;oracle sql
我需要对从数据库检索到的数据(项)进行分页。 用户界面还包含搜索选项和数据量,顺序也取决于搜索条件 假设一个客户端发送了一个带有一些搜索条件的请求,得到了60个结果。客户端可以看到从1到maxPageSize(默认为25)的项目。如果需要第二页,将显示26-50个项目。 问题是在当前时刻,我无法获得最大结果的数量,也无法显示最大页面的数量 我看到了两种解决此问题的方法:数据问题分页:java+;oracle sql,java,oracle,pagination,Java,Oracle,Pagination,我需要对从数据库检索到的数据(项)进行分页。 用户界面还包含搜索选项和数据量,顺序也取决于搜索条件 假设一个客户端发送了一个带有一些搜索条件的请求,得到了60个结果。客户端可以看到从1到maxPageSize(默认为25)的项目。如果需要第二页,将显示26-50个项目。 问题是在当前时刻,我无法获得最大结果的数量,也无法显示最大页面的数量 我看到了两种解决此问题的方法: 第二次使用相同的参数查询数据库,但不使用 分页并获取项目的计数 从数据库中检索所有项目, 按搜索条件在后端代码中过滤它们并发送
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 ?
如果数据库中有大量数据,第二种解决方案将非常昂贵 然而,第一个解决方案非常适合一些tweek。您不需要使用相同的参数再次查询数据库,相反,服务器应该在每个请求中发送总的_计数,并且应该缓存该值
如果计数没有改变,由于缓存的原因,数据库将不会加载。为什么不能获得结果的总数?但更重要的是,你为什么需要它?只需查询26个结果,如果返回26,则显示“下一步”按钮,否则显示为灰色。FE上的设计需要分页,如1、2、3。。。50您能否详细说明您的陈述“如果计数没有改变,由于缓存,数据库将不会加载”如果需要进行任何必要的编辑,答案对他们开放:)