使用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)