Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据问题分页:java+;oracle sql_Java_Oracle_Pagination - Fatal编程技术网

数据问题分页:java+;oracle sql

数据问题分页:java+;oracle sql,java,oracle,pagination,Java,Oracle,Pagination,我需要对从数据库检索到的数据(项)进行分页。 用户界面还包含搜索选项和数据量,顺序也取决于搜索条件 假设一个客户端发送了一个带有一些搜索条件的请求,得到了60个结果。客户端可以看到从1到maxPageSize(默认为25)的项目。如果需要第二页,将显示26-50个项目。 问题是在当前时刻,我无法获得最大结果的数量,也无法显示最大页面的数量 我看到了两种解决此问题的方法: 第二次使用相同的参数查询数据库,但不使用 分页并获取项目的计数 从数据库中检索所有项目, 按搜索条件在后端代码中过滤它们并发送

我需要对从数据库检索到的数据(项)进行分页。 用户界面还包含搜索选项和数据量,顺序也取决于搜索条件

假设一个客户端发送了一个带有一些搜索条件的请求,得到了60个结果。客户端可以看到从1到maxPageSize(默认为25)的项目。如果需要第二页,将显示26-50个项目。 问题是在当前时刻,我无法获得最大结果的数量,也无法显示最大页面的数量

我看到了两种解决此问题的方法:

  • 第二次使用相同的参数查询数据库,但不使用 分页并获取项目的计数
  • 从数据库中检索所有项目, 按搜索条件在后端代码中过滤它们并发送到客户端
  • 问题是:

    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 ?
    

    如果数据库中有大量数据,第二种解决方案将非常昂贵

    然而,第一个解决方案非常适合一些tweek。您不需要使用相同的参数再次查询数据库,相反,服务器应该在每个请求中发送总的_计数,并且应该缓存该值


    如果计数没有改变,由于缓存的原因,数据库将不会加载。

    为什么不能获得结果的总数?但更重要的是,你为什么需要它?只需查询26个结果,如果返回26,则显示“下一步”按钮,否则显示为灰色。FE上的设计需要分页,如1、2、3。。。50您能否详细说明您的陈述“如果计数没有改变,由于缓存,数据库将不会加载”如果需要进行任何必要的编辑,答案对他们开放:)