Jquery 设置显示标记分页以从会话获取结果

Jquery 设置显示标记分页以从会话获取结果,jquery,hibernate,pagination,displaytag,Jquery,Hibernate,Pagination,Displaytag,这是一个理论性的问题,所以我不会在这里发布任何代码 问题是。。我使用显示标记从至少有2000万行的多个表中获取报告的结果。查询在执行和显示标记时会花费自己的宝贵时间,并能很好地呈现表。可能有一千个结果,但我每页只显示10个。每次我点击下一页时,它都会转到我的dao类并再次获取相同的结果集,即使结果已经在下一页的会话中。在这个场景中,我的问题有两个 a我有没有办法让它查看第二、三页或任何连续的页面 b即使第二个页面从第二个页面获得结果,第一次执行查询也需要时间。这次有没有办法减少 我已经参考了下面

这是一个理论性的问题,所以我不会在这里发布任何代码

问题是。。我使用显示标记从至少有2000万行的多个表中获取报告的结果。查询在执行和显示标记时会花费自己的宝贵时间,并能很好地呈现表。可能有一千个结果,但我每页只显示10个。每次我点击下一页时,它都会转到我的dao类并再次获取相同的结果集,即使结果已经在下一页的会话中。在这个场景中,我的问题有两个

a我有没有办法让它查看第二、三页或任何连续的页面

b即使第二个页面从第二个页面获得结果,第一次执行查询也需要时间。这次有没有办法减少

我已经参考了下面的问题,想了解一下。我在寻找更多的想法

http://stackoverflow.com/questions/4770807/displaytag-alternatives
我喜欢这个

http://stackoverflow.com/questions/3143408/displaytag-pagination-vs-hibernate-pagination/3144744#3144744

displaytag中没有任何内容表明返回DAO类。它所做的一切都是使用一些特殊的查询参数重新请求页面,这些参数告诉页面要显示的结果片段。请求页面时会发生什么完全取决于您

您只需在请求处理程序中查看结果是否存储在会话中。如果是,则在响应中使用这些结果。如果没有,则在返回响应之前,运行查询并将它们存储在会话中

当然,如果允许用户指定参数,您需要知道哪些参数用于生成存储在会话上的结果,以便知道是否需要重新运行查询


还有一个问题是,您是否真的想要或能够在内存中存储2000多万行。

您可以使用显示标签给出的一些参数进行检查。 这是我用来检查……的方式

Map stockParamMap = WebUtils.getParametersStartingWith(httpServletRequest, "d-");
if (stockParamMap.size() == 0) { 
     //dao call goes here    
WebUtils.setSessionAttribute(httpServletRequest, "display_tbl",
                    list);     // set list in session
}
如果url中没有包含d-的参数,那么它将调用dao。否则,它只在会话中填充列表。在进行分页时,它将包含此参数,因此不会再次调用dao。
希望它能帮助您

当我们看不到您已经做了什么时,如何提高查询的性能。伙计。。这是一个存储过程,也是一个大问题。。假设查询只是从d,e,f中选择a,b,c,其中i.d=j.e等等。现在怎么办?我的主要问题是显示标签给了我一个分页选项。。每次我使用分页选项。。查询再次运行。