PK分页改为数据库分页的尝试.docxVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PK分页改为数据库分页的尝试

背景:前台列表显示数据时,如果数据量较大(一般大于500)时需要分页显示。目前UIFII默认是分页机制是PK分页,即先查询全部数据的pk并保存在客户端,然后按页面行数大小(即每页显示多少行)来对PK分页。之后根据分页栏控件(PaginationBar)的行为(跳转、上页、下页、首页、末页、修改页面大小)等行为,通过事件通知由PaginationQueryService来查询数据,并交由IPaginationModelListener来将要显示的页面的数据展现到UI上。 问题:但当数据量特别大时(大于5000),特别是客户端的硬件配置较低(内存小、CPU处理能力低下)或客户端到服务器的网络速度条件较差(带宽小、稳定性差)时,客户端在处理分页时的效果较差。 解决方案:其实UIFII中的分页控件只是UAP提供的一种解决方案,UIFII完全支持开发者基于此开发其他算法的分页控件,如下面将尝试的数据库分页算法。即记录查询条件,并在第一次查询全部数据量和第一页数据,之后根据跳转页号的不同拼接不同的查询条件来实现分页。注意:数据库中的数据会在查询分页过程中发生变化,对于PK分页算法来说,其分布在不同页面的查询结果会有数据减少(删除数据)或变更(更新数据)但不会有增加、数据重复;但对于数据库分页,分布在不同页面的数据则会增加、减少、变更或重复。这需要开发者根据使用场景不同来衡量。 UIFII中原来的实现机制 UI配置文件关于分页的部分的内容 bean id=manageModelDataManager class=XXXXModelDataManager bean id=modelService class=XXXAppModelService / bean id=paginationBar class=ponents.pagination.PaginationBar property name=paginationModel ref=paginationModel/property property name=context ref=context / /bean bean id=paginationModel class=ponents.pagination.PaginationModel init-method=init property name=paginationQueryService ref=modelService/property /bean bean id=container class=nc.ui.uif2.TangramContainer init-method=initUI … … bean …ref= paginationBar / … … /bean 数据分页逻辑及数据更新 通常初始化PaginationModel中pk列表的代码,是由结果的数据加载类XXXModelDataManger来调用的。其中XXXPaginationDelegator是为了协助开发者处理分页相关事件处理的工具类,IPaginationModelListener需要实现的具体方法可以交给这个Delegator处理。 public class XXXModelDataManager implements IAppModelDataManagerEx, IPaginationModelListener { BillManageModel model; PaginationModel paginationModel; private BillManagePaginationDelegator delegator; public BillManageModel getModel() { return model; } public BillManagePaginationDelegator getDelegator() { if (delegator == null) { delegator = new BillManagePaginationDelegator(getModel(), getPaginationModel()); } return delegator; } public void setDelegator(BillManagePaginationDelegator delegator) { this.delegator = delegator; } public void setModel(BillManageModel model) { this.model = model; } public void initModel() {

文档评论(0)

woai118doc + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档