You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Oracle ADF 12.2.1.4.0中对大数据集应用分页?

在Oracle ADF 12.2.1.4.0中为大数据集配置分页功能

一、ViewObject核心配置

直接编辑目标ViewObject,在Tuning标签页完成以下设置:

  • 勾选Enable Pagination,开启ADF内置分页支持
  • 设置Fetch Size:指定每次从数据库批量拉取的行数,建议和前端每页展示行数保持一致(如20、50),减少数据库交互次数
  • 设置Max Fetch Size:可选,限制VO最多拉取的总行数,默认-1表示无限制;针对超大数据集,设置合理值避免内存溢出
  • 注意:如果是基于自定义SQL的VO,不要手动添加ROWNUM或OFFSET分页逻辑,ADF会自动根据配置生成对应的分页SQL

二、前端页面配合(ADF Faces)

如果用af:table展示数据,只需简单配置即可启用UI分页:

  • 在af:table标签中设置paginator="true",自动渲染分页控件
  • 配置rows属性为每页显示的行数,需和VO的Fetch Size匹配
  • 可选配置:paginatorPosition(控制分页控件显示位置,如top/bottom/both)、paginatorRange(设置分页控件显示的页码数量)

三、自定义分页逻辑(代码层面)

如果需要在业务层手动控制分页,可在Application Module实现类或客户端代码中调用VO的API:

// 获取目标VO实例
YourViewObjectImpl targetVo = getYourViewObject();
// 设置每次拉取行数
targetVo.setFetchSize(20);
// 设置最大拉取行数(可选)
targetVo.setMaxFetchSize(1000);
// 执行查询
targetVo.executeQuery();

// 跳转到指定行(需确保该行已被拉取,未拉取可调用fetchMoreRows()提前加载)
targetVo.scrollToRow(40);

四、注意事项

  • 确保VO对应的数据库查询有合适的索引,避免分页时数据库执行全表扫描,影响性能
  • 复杂查询(如多表关联、子查询)需验证ADF生成的分页SQL正确性,可通过ADT的SQL Log查看生成语句
  • 若数据量极大,getEstimatedRowCount()获取总记录数可能性能低下,可在VO的Tuning标签页关闭Estimate Row Count,或自定义实现总行数查询逻辑

内容的提问来源于stack exchange,提问作者Tung Vo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:35:20