论坛首页 入门技术论坛

小论分页方案

浏览 8301 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-06-19  
没看懂
0 请登录后投票
   发表时间:2007-06-20  
heyujava 写道
没看懂



看来你可能习惯于复杂的东西。
那我简单解释一下
PageResult pageResult = new PageResult(Account._, null, null, 100);  

是调用构造函数:
@ param selectPropNames- null 表示list所有属性。
@ param condition- null表示没有条件,也就是list所有的记录。
PageResult(String objectName, List<String> selectPropNames,
                 Condition condition, int pageSize)

这个构造函数能看懂把。
这个构造函数会根据你输入的参数初始化PageResult实例。
举例说,你有一个account对象(表),你的应用程序里有根据性别list account的业务,但只list "id", "name"属性。每页200条记录,那相应的代码就是。
PageResult pageResult = new PageResult("Account", Arrays.asList("id", "name"), eq("sex", "male"), 200);  


剩下工作,就是PageResult把你做了,你根本不需要去过问那些无需你关心的事,例如,怎么分页?怎么取记录?怎么优化性能?怎么cache page?怎么释放cache到但长时间不用的page,等等。
PageResult是多线程安全的。

0 请登录后投票
   发表时间:2007-06-20  
raykcn 写道
这是方案 ?
想把算法卖给大家 ?


小孩子真聪明!
买给你,有钱吗?
0 请登录后投票
   发表时间:2007-06-20  
ddandyy 写道
我倒是测过oracle的sql拿指定行

在1W行以前是有很大差别的  越靠前速度越快
过1W行之后 速度几乎都是一样的了


我想你们做法也许需要商榷
0 请登录后投票
   发表时间:2007-06-20  
啊......
忘了说了  不是src时间  是指单纯的sql语句时间

单纯的sql语句就没有什么做法了吧

另外对你这个结果很疑惑  不知道能说明什么

你应该给出你从第一页开始  一直翻到最后一页  用了多长时间   每一页都用了多长时间

另外分页这种东西  最有影响的还是数据库  sql语句写得怎么样  index设置的怎么样 等等等等
src这边  大体上差距不是很明显
0 请登录后投票
   发表时间:2007-06-20  
ddandyy 写道
啊......
忘了说了  不是src时间  是指单纯的sql语句时间

单纯的sql语句就没有什么做法了吧

另外对你这个结果很疑惑  不知道能说明什么

你应该给出你从第一页开始  一直翻到最后一页  用了多长时间   每一页都用了多长时间

另外分页这种东西  最有影响的还是数据库  sql语句写得怎么样  index设置的怎么样 等等等等
src这边  大体上差距不是很明显


我想自己是对的:

>> 我想你们做法也许需要商榷

有象你这样做分页的吗?
首先你要明白你面对的是人还是机器?
如果你面对的是人,通常的关于分页的界面是:
第一页,上一页,下一页,最后一页

做的好点可能会“跳转”
第一页,上一页,下一页,最后一页,跳到【】页

象那些搜索引擎google,百度之类,他们通常只cache到前面100到200页(我估计最多这么页),因为很少人很少的时候翻查记录超过一定的页数(例如5页或10页),并且它们不可能提供跳转页面功能,例如查询结果是1亿,他不可能让你跳转到第10,000页,或20,0000页。

至于你说的从第一页翻到最后一页,如果页面大的话,那纯粹是搞笑。
0 请登录后投票
   发表时间:2007-06-20  
看上面的票数  应该能说明点什么吧(我没投)

另外对你cache的做法可以理解   不过这个应该是和业务有关的  不是适合所有情况   如果查询条件很多 且经常变更怎么办
0 请登录后投票
   发表时间:2007-06-20  
ddandyy 写道
看上面的票数  应该能说明点什么吧(我没投)

另外对你cache的做法可以理解   不过这个应该是和业务有关的  不是适合所有情况   如果查询条件很多 且经常变更怎么办


呵呵,还是第一次注意到什么票数!在您提醒下。

至于你说的页面很多或经常更新的问题,就不想和你们谈论,就当你ok了。

忘记了一个重要的前提:我这里讨论的是那些大结果集分页的问题,至于那些万条记录一下,100页之下的记录,不在这里讨论范围内,可能上面PageResult的参数:Condition会带来误会,不是叫你任何时候都用,PageResult只用在一些特定的页面list(例如list一个什么表所有的记录,通常一般的程序都有这样的业务,跟据表的个数和大小来决定,来决定是否用PageResult)。
0 请登录后投票
   发表时间:2007-06-20  
我想你是没明白意思
每页1000条 10页就能翻到1W条了  1000条一页不过分吧  最少我们现在这个项目就有  有时候翻个 20-30页应该是很正常的 最少我经常在google翻这么多

我承认一般用到的都是前面几条   前面几条的速度也确实不慢  我上面的结果也放出来了   关键就是翻到后面的时候速度怎么  你不能说只有很少人翻过去就不考虑这方面  有一些做法越往后翻速度越慢 而且是几何级别的
0 请登录后投票
   发表时间:2007-06-20  
另外我想你误会了一个事  我没说你的做法不好  只是质疑了一下你的TEST结果  想要你的另一种结果而已  在看到TEST结果之前 谁也不知道好坏的

如果有人买 说是要你这种结果 你能不给么

当然 如果你说我不买  没有义务给我这个结果  那当然也是完全可以的
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics