学习Jive(Jdon版)分页处理遇到了一些困惑,请指教

05-08-07 oldbig615
主要在com.jivesoftware.forum.database.DbForum这个类里

1.我对这里块(block)搞不明白,按他这里说的,

int blockID = startIndex / THREAD_BLOCK_SIZE; //1251行

int blockStart = blockID * THREAD_BLOCK_SIZE;

根据THREAD_BLOCK_SIZE得到blockStart

假如我的显示的内容跨两个块该怎么办?

这里THREAD_BLOCK_SIZE=200,如果我要显示从180到240的该怎么显示,返回两个块(block)吗?

2.在DbForum.java 的getThreadBlock(String query, int startIndex)方法中,当缓存中不存在时,他从数据库里取。

con = ConnectionManager.getConnection();

stmt = con.createStatement();

// Set the maxium number of rows to end at the end of this block.

ConnectionManager.setMaxRows(stmt, THREAD_BLOCK_SIZE * (blockID+1));

ResultSet rs = stmt.executeQuery(query);

// Grab THREAD_BLOCK_ROWS rows at a time.

ConnectionManager.setFetchSize(rs, THREAD_BLOCK_SIZE);

// Many JDBC drivers don't implement scrollable cursors the real

// way, but instead load all results into memory. Looping through

// the results ourselves is more efficient.

for (int i=0; i<blockStart; i++) {

rs.next();

}

上面这个循环让我有点困惑,如果blockStart很大,成千上万,这个使用rs.next()的效率会不会很差?有什么更好的办法?

banq
2005-08-14 18:56
这是一个通用方法,有时最简单的方法性能不错,指针移动。

猜你喜欢