Limit指南.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Limit指南

Limit指南 (2007-08-13 11:26:09) 转载 标签: ? Limit指南 1.?引言 在你需要处理大量数据时你应该考虑使用eXtremeTable的Limit特性。Limit这个名字来自MySQL的limit 命令,Limit接口的目的就是如何对表的结果集进行limit处理。Limit实现知道当排序、过滤、分页、导出时,用户如何与表互相作用。有了这些信息你将能够使用可能是最有效的方式显示正确的过滤、排序后的请求页面。 为了示范Limit特性,我将要做的工作将分解为JSP、Controller、Service和DAO。这示范了一种使用分层的方式来处理 Limit。你可以根据自己的需要来增加或减少层。本示例也使用了Spring框架来重新得到使用Spring的JDBC取得的数据,因此你的代码看起来可能有点不同。eXtremeTable的一个特点就是不依赖任何框架和容器。 1.1.?JSP 为了使用Limit特性,eXtremeTable需要使用limit特定的RetrieveRowsCallback、 FilterRowsCallback和SortRowsCallback接口。eXtremeComponents提供了每个接口的一个实现,可以简单地通过设置每个属性值为limit来简单来使用。 ec:table items=presidents retrieveRowsCallback=limit filterRowsCallback=limit sortRowsCallback=limit view=limit ... 另外视图属性参照一个名为limit的定制视图。这是一个简单修改默认eXtremeTable视图,不包含最后页工具条的实现。这仅仅关系到你是否能取得确切需要的行。一些数据库例如Oracle和MySQL都提供了一种得到确定行的特性,但是,其他的数据库例如:Sybase没有提供特性。在我的示例中我考虑最坏的情况你的数据库不支持这种特性。 即使你的数据库不提供取得特定行的特性,当你考虑用户如何和表协同工作时,Limit仍然非常有意义。用户通常会对一些数据进行排序、过滤和分页。这个例子中15条数据构成一页,第一页需要15条数据,第二页需要30条数据,第三页需要45条数据,以此类推。在经过一段时间分页后,他们常常使用过滤来提炼数据。即使他们不这样做,他们也必须在此之前对大量的数据进行分页,这将影响效率。当然如果允许用户点击最后页,那么所有的数据都将被取出,这将非常影响效率。 1.2.?Controller 提示:Spring框架的Controller和Struts框架的Action非常相像。 controller首先需要创建一个Limit。为了完成这个你需要得到一些关于Context和LimitFactory的帮助。 Context context = new HttpServletRequestContext(request); LimitFactory limitFactory = new TableLimitFactory(context); Limit limit = new TableLimit(limitFactory); Context是一个处理取得属性的接口,LimitFactory使用Context来找出用户如何和eXtremeTable交互。然后Limit使用LimitFactory来组装自己。 为了初始化Limit,它将包含所有的有用的信息。这些信息包括数据将被如何排序和过滤,哪一页将被显示和是否允许被导出。 然而,Limit仍然需要得到行的信息,这样正确的信息页面才能被显示给用户。行信息包括开始行、结束行、当前显示行。 controller必须从service得到这些信息,而Service将从dao中得到这些信息。这里我只给出Controller端的代码。 int totalRows = presidentsService.getTotalPresidents(limit.getFilterSet(), limit.isExported()); limit.setRowAttributes(totalRows, defaultRowsDisplayed); limit需要得到所有的行来得到行的信息。service需要知道那些被过滤,不管这些数据是否要导出。为了设置行信息,默认的一页显示的行数需要被设置。这可以通过对TableTag的rowsDisplayed属性设置一个确定的数值来实现。 现在我们只需要从services得到Collection数据。 Collection presidents = presidentsService.getPresidents(limit

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档