ADF:获取RowSetIterator的最后一页中的其余行

问题描述 投票:0回答:1

我有一个rowSetIterator,总共12行,rangeSize为5。我正在像下面那样访问行:

RowSetIterator rs = vo.getRowSetIterator();
int totalPages = rs.getEstimatedRangePageCount();
for(int pageIndex=0; pageIndex<totalPages; pageIndex++){
    rs.scrollToRangePage(pageIndex + 1);
    Row[] rows = rs.getAllRowsInRange();
    for(int rowIndex=0; rowIndex<rows.length; rowIndex++){
        Row row = rows[rowIndex];
        print(row);
    }
    System.out.println("going to next page");
}

但是此代码导致打印行,如下所示:

1 2 3 4 5
going to next page
6 7 8 9 10
going to next page
8 9 10 11 12
going to next page

[有没有一种方法可以只检索滚动到最后一页时存在的其余行,即,仅访问第11行和第12行(来自上述示例)。

viewObject是一个可更新的对象,并且具有访问模式SCROLLABLE。

上述情况只是一个例子。在实际情况下,我正在处理更大的rangeSize和更大的数据。因此,需要一些帮助来调整我的viewObject使其更有效率。

java performance oracle-adf jdeveloper
1个回答
0
投票

viewObject是RowIterator,因此您不需要像这样循环遍历自己的循环。通过允许ADF框架处理范围导航,您不应两次遇到同一行。以下内容将使您接近:

vo.reset();//puts us at slot before first row
while(vo.hasNext())
{
  Row row = vo.next();//Automatically navigates rangesets when needed
  print(row);
}

如果您关注性能,请阅读:https://docs.oracle.com/middleware/1213/adf/develop/adf-bc-view-object-tuning.htm

如果要遍历所有行,则可能需要调整视图以使其具有更大的范围和读取大小(通常建议不超过100)。>>

最后,与您的原始问题更相关,您可能要确保未选中“视图”调整中的“在通过RowSet分页时填充行的最后一页”选项。

© www.soinside.com 2019 - 2024. All rights reserved.