项目中查询分页,出现问题,高手指点思路!

采用了Struts1.2 + dao + hibernate2.12

先说说我的分页思路:
为了应对大数据量的查询,关注点是查询效率。

每次从数据库中取出200条记录,每个页面显示20条,对应的两个类为:Block和Page。

第一次查询时,先查询表中的记录总数,将得到的这个数字,作为参数传递到Block和Page的构造函数,生成唯一的Block对象,和唯一的Pager对象。这两个类生成实例时,采用了singleton模式,主要是考虑到,数据量大,不采用这个模式,会生成过多的对象,影响性能。
之所以将这个数字作为参数,是因为Block和Page类中,需要这个数字,以得到记录总数,并由此计算Block数、Page数。

接下来,在一个dao类中查询第一个Block的记录数,经hibernate查询后,得到一个List对象。在Action类中,将这个List对象保存到一个ArrayList对象中。并且,将每次查询得到的数据,依次累加的存放到这个List对象中。这样,只要查询的记录不超出范围,就直接到这个对象中取,避免了频繁的访问数据库。

同时产生一个问题:数据量大时,会生成一个非常大的对象,这样会对性能产生很大的影响,如果将暂时不会被查询的数据,从这个对象中删除,保持这个List对象规模较小,应该是个好做法,可是,怎样判断哪些数据可以被删除,我就搞不清楚了,请您指点一下,谢谢!!!

然后,将这个Block中的记录,分成10个Page。得到存放第一个20条记录的ArrayList对象,将这个ArrayList对象,保存到session中,在jsp页中得到它,并显示。

推荐你研究一下Jdon框架的分页思路实现,可查看使用指南,对你有借鉴作用。

多谢banq,偶去看看