我下面有200条记录的代码。我需要在这实现分页。

  Statement.Builder buildStatement = Statement.newBuilder(sql);
  List<EmployeeSpanner> spannerList= this.spannerTemplate
                .query(EmployeeSpanner.class, buildStatement.build(), null);


SQL是基于多种逻辑和条件创建的,因此我不能使用findAll之类的东西。

这将返回200条记录,我们需要通过分页将其发送到UI,以便在第一页上仅显示25条记录,然后在第二页上显示25条,依此类推。

完成以下操作后,下面是OLTP的操作,但是对于Google扳手,我需要类似的操作。

 int countset= (int) (pageable.getOffset() > countOfRecord? 0 : pageable.getOffset());
        query.setFirstResult(countset);
        query.setMaxResults(pageable.getPageSize());

    return new PageImpl<>(query.getResultList(), pageable, countOfRecord);

最佳答案

要实现分页查询,您需要为SpannerQueryOptions配置limitoffset,然后将其传递给查询。

SpannerQueryOptions spannerQueryOptions = new SpannerQueryOptions().setLimit(25L).setOffset(page * 25L);

Statement.Builder buildStatement = Statement.newBuilder(sql);
List<EmployeeSpanner> spannerList= this.spannerTemplate.query(EmployeeSpanner.class, buildStatement.build(), spannerQueryOptions);

10-02 11:44