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

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
背景:前台列表显示数据时,如果数据量较大(一般大于500)时需要分页显示。目前UIFII 默认是分页机制是 PK 分页,即先查询全部数据的 pk 并保存在客户端,然后按页面行数大小 (即每页显示多少行)来对 PK 分页。之后根据分页栏控件(PaginationBar)的行为(跳转、上页、下页、首页、末页、修改页面大小)等行为,通过事件通知由PaginationQueryService 来查询数据,并交由 IPaginationModelListener 来将要显示的页面的数据展现到UI 上。 问题:但当数据量特别大时(大于5000),特别是客户端的硬件配置较低(内存小、CPU 处理能力低下)或客户端到服务器的网络速度条件较差(带宽小、稳定性差)时,客户端在处理分页时的效果较差。 解决方案:其实UIFII 中的分页控件只是 UAP 提供的一种解决方案,UIFII 完全支持开发者基于此开发其他算法的分页控件,如下面将尝试的数据库分页算法。即记录查询条件,并在第 一次查询全部数据量和第一页数据,之后根据跳转页号的不同拼接不同的查询条件来实现分 页。注意:数据库中的数据会在查询分页过程中发生变化,对于PK 分页算法来说,其分布在不同页面的查询结果会有数据减少(删除数据)或变更(更新数据)但不会有增加、数据重复;但对于数据库分页,分布在不同页面的数据则会增加、减少、变更或重复。这需要开发者根据使用场景不同来衡量。 UIFII 中原来的实现机制 UI 配置文件关于分页的部分的内容 beanid=manageModelDataManagerclass=XXXXModelDataManager beanid=modelServiceclass=XXXAppModelService/ beanid=paginationBarclass=ponents.pagination.PaginationBar propertyname=paginationModelref=paginationModel/property propertyname=contextref=context/ /bean beanid=paginationModelclass=ponents.pagination.PaginationModel init-method=init propertyname=paginationQueryServiceref=modelService/property /bean beanid=containerclass=nc.ui.uif2.TangramContainer init-method=initUI …… bean…ref=paginationBar/ …… /bean 数据分页逻辑及数据更新 publicclassXXXModelDataManagerimplementsIAppModelDataManagerEx,IPaginationModelListener {BillManageModelmodel; PaginationModelpaginationModel; privateBillManagePaginationDelegatordelegator;publicBillManageModelgetModel() {return publicclassXXXModelDataManagerimplementsIAppModelDataManagerEx,IPaginationModelL istener { BillManageModelmodel; PaginationModelpaginationModel; privateBillManagePaginationDelegatordelegator; publicBillManageModelgetModel() { returnmodel; } publicBillManagePaginationDelegatorgetDelegator() { if (delegator == null) { delegator = newBillManagePaginationDelegator(getModel(), getPaginationModel()); } returndelegator; } publicvoidsetDelegator(BillManagePaginationDelegator delegator) { this.delegator = delegator; } publicvoidsetModel(BillManageModel model) { this.model = model; } publicvoidinitModel

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

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

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档