使用Java在Google App Engine中进行分页

我需要创建简单的对象分页,但是当我阅读手册时,我发现query.setRange(5,10); 将获取10个对象,即使只需要5个对象。

无论如何只能抓取需要的对象吗?

编辑:我开始赏金,所以你可以告诉我简单的示例代码在Java中的作品,然后我会接受你的答案。


这个怎么样:

List<Employee> results = (List<Employee>) query.execute();
// Use the first 20 results...

Cursor cursor = JPACursorHelper.getCursor(results);
String cursorString = cursor.toWebSafeString();
// Store the cursorString...

// ...

// Query query = the same query that produced the cursor
// String cursorString = the string from storage
Cursor cursor = Cursor.fromWebSafeString(cursorString);
query.setHint(JPACursorHelper.CURSOR_HINT, cursor);
query.setRange(0, 20);

List<Employee> results = (List<Employee>) query.execute();
// Use the next 20 results...

从:

如何在GAE上使用jpa上的数据存储区游标

也:

http://groups.google.com/group/google-appengine-java/browse_thread/thread/5223215ff24c3b3e/d22297d1d76a9c8b

或者没有JPA请参阅:

http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Cursor.html


在App Engine网站上有一篇关于这个主题的文章:

http://code.google.com/appengine/articles/paging.html

这些例子是用Python编写的,但它们很简单,可以很容易地转换成Java。

这是一个Java实现,我没有阅读或测试过。


为什么从数据库返回10个对象时会出现问题? 你仍然会返回你关心的5个对象(前5个被丢弃)。

我并没有问,因为我认为setRange方法是一个非常好的扩展解决方案,但它是一个简单而合理的解决方案,在很多情况下都足够了。

您是否正在计划分页非常大的表格或合并昂贵的连接? 如果没有,我会试着用setRange作为分页的起点。

链接地址: http://www.djcxy.com/p/46313.html

上一篇: Pagination in Google App Engine with Java

下一篇: Interesting / well written unit tests to read (literate programming)