- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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() {
您可能关注的文档
- IMF:清晰的财政改革是日银刺激能成功的关键.doc
- Index of Flowering(Index – V).ppt
- Institut für angewandte Gewsserkologie GmbH.ppt
- IV.英雄史诗 从荷马到维吉尔.ppt
- Java 并发编程实战 学习分享.ppt
- Java 类与接口设计.ppt
- knives-and-forks-are-used-for-most-food课件.ppt
- Konjunktionen(连词),Praepositionen(介词2222222222.ppt
- L09 B 享元(Flyweight)模式wxz.ppt
- LCM液晶模块介绍-如何选择LCM液晶模块,LCM液晶模块选购指南.doc
文档评论(0)