我下面有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
配置limit
和offset
,然后将其传递给查询。
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);