web分页,没有可滚动的结果集

i7uq4tfw  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(228)

这肯定已经做了一千次了,但是我在网上找不到java代码。
我正在编写一个网页,其中显示了oracle11g中的一个列表,由dao使用jdbctemplate检索。
它本质上是一个审计日志,带有一个日期搜索字段,以显示该日期和以前日期的日志条目。
我的审计日志服务类将调用dao并将返回的行数限制为100,并且必须计算出要在查询中指定的最新日期。然后它将把审计日志javabean列表传回mvc层。
这是我为sql所做的最大努力,为了进行测试,sql必须与h2(oracle模式)兼容(这就排除了row(number()函数)。latestdate和maxrows是参数。

SELECT * FROM (
                SELECT * FROM T_ETL_AUDIT_LOG 
                WHERE LOG_TIMESTAMP  < ?latestDate 
            ) WHERE rownum < ?maxRows;

因此,我需要确定网页上的参数是什么(例如,lastdate,previous,next),审计日志服务算法必须处理第一个调用(date=now),以及上一页,下一页,而不会混淆。
我还没有为jsp搜索分页标签,所以任何建议都很酷,但这是锦上添花。
注意:我没有使用oracle 12,因此无法使用新的oracle分页功能
2015-01-20-刚刚将标题更改为排除可滚动结果集解决方案。

zf2sa74q

zf2sa74q1#

jdbctemplate不能直接帮助分页。您必须进行查询以处理页码和页面大小。还应进行计数查询。
这是一个逐个创建分页组件的解决方案:http://javablackboard.blogspot.ro/2013/05/jsp_7.html
在这里,自定义jsp标记用于分页:http://www.javaworld.com/article/2072877/swing-gui-programming/paging-long-lists.html

u5i3ibmn

u5i3ibmn2#

我在客户端使用页码,所以“下一页”和“上一页”按钮传输下一页或上一页的页码。我的服务将页码转换为dao的previouslastrow和lastrow参数。在用户更改之前,每个页面上的原始搜索日期保持不变。
这是用于oracle的sql,第2页的参数替换为中的参数(即第101到200行):

select * from (
    select ROWNUM as row_num, b.* from (
        select ROWNUM, MY_TIMESTAMP 
        from T_MY_TABLE 
        where MY_TIMESTAMP < TIMESTAMP'2015-01-20 12:12:34'
        and ROWNUM <= 200
        order by MY_TIMESTAMP desc
    ) b 
) where row_num > 100;

相关问题