Как реализовать разбиение на страницы в Spanner при работе с Java - PullRequest
0 голосов
/ 27 января 2020

У меня есть код ниже, для которого есть 200 записей. Мне нужно реализовать нумерацию страниц в этом.

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

SQL создан на основе нескольких логарифмов c и условий, поэтому я не могу использовать что-либо вроде findAll.

Это возвращает мне 200 записей, и нам нужно отправить это в пользовательский интерфейс с нумерацией страниц, чтобы на первой странице показывалось только 25 записей, а на второй 25 и т. д.

Когда мы сделаем это для OLTP ниже, мы будем использовать это, но для гаечного ключа мне нужно что-то похожее.

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

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

1 Ответ

0 голосов
/ 27 января 2020

Для реализации запросов на нумерацию страниц необходимо настроить 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);
...