【问题标题】:Spring Data JPA slice underlying SQLSpring Data JPA 切片底层 SQL
【发布时间】:2019-10-04 04:39:21
【问题描述】:

我正在阅读 Spring Data JPA 官方文档中关于 PageSlice 之间区别的这一段(重点是我的):

第一种方法让您将 org.springframework.data.domain.Pageable 实例传递给查询方法,以将分页动态添加到静态定义的查询中。页面知道可用元素和页面的总数。它是通过基础设施触发计数查询来计算总数来实现的。 由于这可能很昂贵(取决于所使用的商店),您可以改为返回 Slice。 Slice 只知道下一个 Slice 是否可用,这在遍历更大的结果集时可能就足够了。

我知道Page 如何通过使用相同的 where 子句执行附加计数查询来获取总元素,但是 Slice 如何通过单个查询知道其他元素是否可用?执行的 SQL 是什么?

【问题讨论】:

  • 我还想问一下,如果它是一种切片,那实际上会比可分页慢吗?即 PageRequest.of(0, 10, Direction.DESC, "createdTimestamp")

标签: java sql spring spring-data-jpa


【解决方案1】:

Slice 如何通过单个查询了解其他元素是否可用?

Spring Data JPA 选择的元素多于填充Slice 的实际需要,如果存在该附加元素,则还有另一个Slice 可用。如果不是,这是最后一个Slice

See the code.

【讨论】:

  • 对此只是一个疑问..由于不需要偏移量,所以我们必须像页面大小为 10 一样递增地传递页面大小,然后在每个无限滚动触发器上我都必须通过页面大小为 10,20,30,40 等等?
  • @VishalNair “不需要偏移量”是什么意思?您仍然需要提供一个具有偏移量的Pageable,它可能是null。页面大小必须是您想要的任何页面大小。我认为这应该作为一个适当的问题提出,并提供有关您要解决的问题的更多详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2014-08-13
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
相关资源
最近更新 更多