资讯专栏INFORMATION COLUMN

spring data Slice 学习

Ali_ / 2194人阅读

摘要:需求新开发一个接口,返回结果要求使用替换原来的。和的区别首先,是继承了的,所以的功能要比更多。然后从上面的方法中,我们就能看出,能够获取分页中的所有结果。所以上面的和都是针对当前页所说的。因为大多数时候,我们并不需要知道结果集总数是多少。

需求

新开发一个接口,返回结果要求使用Slice替换原来的Page

Slice和Page的区别

首先,Page是继承了Slice的,所以Page的功能要比Slice更多。

public interface Page extends Slice {
    int getTotalPages();

    long getTotalElements();

     Page map(Converter var1);
}

然后从上面的方法中,我们就能看出,Page能够获取分页中的所有结果。

Slice不同,再来看一下它的源码:

public interface Slice extends Iterable {
    int getNumber();

    int getSize();

    int getNumberOfElements();

    List getContent();

    boolean hasContent();

    Sort getSort();

    boolean isFirst();

    boolean isLast();

    boolean hasNext();

    boolean hasPrevious();

    Pageable nextPageable();

    Pageable previousPageable();

     Slice map(Converter var1);
}

Slice只能获取到当前页的数据,然后通过上面的nextPageable()previousPageable()两个方法,又能获取到前一页和后一页的数据。所以上面的getNumber()getSize()getNumberOfElements()getContent()都是针对当前页所说的。

Why Slice

看到这里,我们就会疑惑了,既然Page的功能比Slice更加强大,那为什么我们还要使用Slice呢?

这个问题的答案,在官方文档中给出了解释:

A Page knows about the total number of elements and pages available. It does so by the infrastructure triggering a count query to calculate the overall number. As this might be expensive (depending on the store used), you can instead return a Slice. A Slice only knows about whether a next Slice is available, which might be sufficient when walking through a larger result set.

大概的意思就是说Page实现了获取所有记录的数量和页面的总数,但是它是通过count query来计算的,所以这个代价就是很大的。

所以,当我们有一个很大的数据集的时候,Slice可能就能满足我们的需求了。因为大多数时候,我们并不需要知道结果集总数是多少。

官方文档:https://docs.spring.io/spring...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72144.html

相关文章

  • spring-data-mongodb常用操作

    摘要:踩到许多坑,记录下一些基于的东西吧首先。先创建个集合,保存写信息,然后再创建集合,可以发现存储的时候变成了一个引用类型。王大锤那么查询的时候,如果要根据查询班级怎么办,的查询也非常简单。详情可以查看官方文档用法 刚接触mongodb不久。踩到许多坑,记录下一些基于spring-data-mongodb的东西吧 首先。应该了解下什么情况下使用mongodb,什么情况下用mysql: 业...

    Michael_Ding 评论0 收藏0
  • spring-data-mongodb查询使用的一些总结

    摘要:踩到许多坑,记录下一些基于的东西吧首先。王大锤那么查询的时候,如果要根据查询班级怎么办,的查询也非常简单。详情可以查看官方文档用法 刚接触mongodb不久。踩到许多坑,记录下一些基于spring-data-mongodb的东西吧 首先。应该了解下什么情况下使用mongodb,什么情况下用mysql: 业务需要事物,使用mysql,因为mongodb不支持事物 数据量大,但是数据本身...

    jollywing 评论0 收藏0
  • spring-data-mongodb查询使用的一些总结

    摘要:踩到许多坑,记录下一些基于的东西吧首先。王大锤那么查询的时候,如果要根据查询班级怎么办,的查询也非常简单。详情可以查看官方文档用法 刚接触mongodb不久。踩到许多坑,记录下一些基于spring-data-mongodb的东西吧 首先。应该了解下什么情况下使用mongodb,什么情况下用mysql: 业务需要事物,使用mysql,因为mongodb不支持事物 数据量大,但是数据本身...

    FuisonDesign 评论0 收藏0
  • mongoDB原生查询与spring data mongoDB的映射

    摘要:一按照等条件组合查询,同时添加和原生二执行操作,更新单个文档原生三通过命令更新文档并且返回更新之后的文档只能作用于单个文档原生四聚合操作根据某一字段,并且将文档中的某一字段合并到数组中,最后取数组中的第一个元素原生五数组查询,在某个中包 一、按照in、eq、lte等条件组合查询,同时添加sort和limit1、原生 db.message.find( { receiverRol...

    ziwenxie 评论0 收藏0
  • Spring Boot 最流行的 16 条实践解读!

    摘要:来源是最流行的用于开发微服务的框架。以下依次列出了最佳实践,排名不分先后。这非常有助于避免可怕的地狱。推荐使用构造函数注入这一条实践来自的项目负责人。保持业务逻辑免受代码侵入的一种方法是使用构造函数注入。 showImg(https://mmbiz.qpic.cn/mmbiz_jpg/R3InYSAIZkHQ40ly9Oztiart2lESCyjCH0JwFRp3oErlYobhibM...

    Ethan815 评论0 收藏0

发表评论

0条评论

Ali_

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<