【问题标题】:Pagination in Google App Engine with Java使用 Java 在 Google App Engine 中进行分页
【发布时间】:2010-06-10 18:50:56
【问题描述】:

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

有没有办法获取刚需要的对象?

编辑:我开始赏金了,所以你可以向我展示 Java 中有效的简单示例代码,然后我会接受你的回答。

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    这个怎么样:

    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...
    

    发件人:

    How to use datastore cursors with jpa on GAE

    还有:

    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

    【讨论】:

      【解决方案2】:

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

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

      这些示例是用 Python 编写的,但它们足够简单,您可以很容易地将其转换为 Java。

      Here's a Java implementation,我没有阅读或测试过。

      【讨论】:

        【解决方案3】:

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

        我不是在问,因为我认为 setRange 方法是一个扩展性非常好的解决方案,但它是一个简单合理的解决方案,在很多情况下都绰绰有余。

        您是否计划对超大表进行分页或合并昂贵的连接?如果没有,我很想使用 setRange 作为分页的起点。

        【讨论】:

          【解决方案4】:

          如果您尝试进行分页,您可能希望考虑使用 cursors 而不是 setRange。

          【讨论】:

            猜你喜欢
            • 2015-04-25
            • 1970-01-01
            • 2014-11-01
            • 2011-06-12
            • 2011-07-16
            • 2013-10-31
            • 1970-01-01
            • 2011-10-03
            • 1970-01-01
            相关资源
            最近更新 更多