摘要:需求新開發(fā)一個(gè)接口,返回結(jié)果要求使用替換原來(lái)的。和的區(qū)別首先,是繼承了的,所以的功能要比更多。然后從上面的方法中,我們就能看出,能夠獲取分頁(yè)中的所有結(jié)果。所以上面的和都是針對(duì)當(dāng)前頁(yè)所說(shuō)的。因?yàn)榇蠖鄶?shù)時(shí)候,我們并不需要知道結(jié)果集總數(shù)是多少。
需求
新開發(fā)一個(gè)接口,返回結(jié)果要求使用Slice替換原來(lái)的Page。
Slice和Page的區(qū)別首先,Page是繼承了Slice的,所以Page的功能要比Slice更多。
public interface Pageextends Slice { int getTotalPages(); long getTotalElements(); Pagemap(Converter super T, ? extends S> var1); }
然后從上面的方法中,我們就能看出,Page能夠獲取分頁(yè)中的所有結(jié)果。
而Slice不同,再來(lái)看一下它的源碼:
public interface Sliceextends 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(); Slicemap(Converter super T, ? extends S> var1); }
Slice只能獲取到當(dāng)前頁(yè)的數(shù)據(jù),然后通過(guò)上面的nextPageable()和previousPageable()兩個(gè)方法,又能獲取到前一頁(yè)和后一頁(yè)的數(shù)據(jù)。所以上面的getNumber()、getSize()、getNumberOfElements()和getContent()都是針對(duì)當(dāng)前頁(yè)所說(shuō)的。
Why Slice看到這里,我們就會(huì)疑惑了,既然Page的功能比Slice更加強(qiáng)大,那為什么我們還要使用Slice呢?
這個(gè)問(wèn)題的答案,在官方文檔中給出了解釋:
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.
大概的意思就是說(shuō)Page實(shí)現(xiàn)了獲取所有記錄的數(shù)量和頁(yè)面的總數(shù),但是它是通過(guò)count query來(lái)計(jì)算的,所以這個(gè)代價(jià)就是很大的。
所以,當(dāng)我們有一個(gè)很大的數(shù)據(jù)集的時(shí)候,Slice可能就能滿足我們的需求了。因?yàn)榇蠖鄶?shù)時(shí)候,我們并不需要知道結(jié)果集總數(shù)是多少。
官方文檔:https://docs.spring.io/spring...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72144.html
摘要:踩到許多坑,記錄下一些基于的東西吧首先。先創(chuàng)建個(gè)集合,保存寫信息,然后再創(chuàng)建集合,可以發(fā)現(xiàn)存儲(chǔ)的時(shí)候變成了一個(gè)引用類型。王大錘那么查詢的時(shí)候,如果要根據(jù)查詢班級(jí)怎么辦,的查詢也非常簡(jiǎn)單。詳情可以查看官方文檔用法 剛接觸mongodb不久。踩到許多坑,記錄下一些基于spring-data-mongodb的東西吧 首先。應(yīng)該了解下什么情況下使用mongodb,什么情況下用mysql: 業(yè)...
摘要:踩到許多坑,記錄下一些基于的東西吧首先。王大錘那么查詢的時(shí)候,如果要根據(jù)查詢班級(jí)怎么辦,的查詢也非常簡(jiǎn)單。詳情可以查看官方文檔用法 剛接觸mongodb不久。踩到許多坑,記錄下一些基于spring-data-mongodb的東西吧 首先。應(yīng)該了解下什么情況下使用mongodb,什么情況下用mysql: 業(yè)務(wù)需要事物,使用mysql,因?yàn)閙ongodb不支持事物 數(shù)據(jù)量大,但是數(shù)據(jù)本身...
摘要:踩到許多坑,記錄下一些基于的東西吧首先。王大錘那么查詢的時(shí)候,如果要根據(jù)查詢班級(jí)怎么辦,的查詢也非常簡(jiǎn)單。詳情可以查看官方文檔用法 剛接觸mongodb不久。踩到許多坑,記錄下一些基于spring-data-mongodb的東西吧 首先。應(yīng)該了解下什么情況下使用mongodb,什么情況下用mysql: 業(yè)務(wù)需要事物,使用mysql,因?yàn)閙ongodb不支持事物 數(shù)據(jù)量大,但是數(shù)據(jù)本身...
摘要:一按照等條件組合查詢,同時(shí)添加和原生二執(zhí)行操作,更新單個(gè)文檔原生三通過(guò)命令更新文檔并且返回更新之后的文檔只能作用于單個(gè)文檔原生四聚合操作根據(jù)某一字段,并且將文檔中的某一字段合并到數(shù)組中,最后取數(shù)組中的第一個(gè)元素原生五數(shù)組查詢,在某個(gè)中包 一、按照in、eq、lte等條件組合查詢,同時(shí)添加sort和limit1、原生 db.message.find( { receiverRol...
摘要:來(lái)源是最流行的用于開發(fā)微服務(wù)的框架。以下依次列出了最佳實(shí)踐,排名不分先后。這非常有助于避免可怕的地獄。推薦使用構(gòu)造函數(shù)注入這一條實(shí)踐來(lái)自的項(xiàng)目負(fù)責(zé)人。保持業(yè)務(wù)邏輯免受代碼侵入的一種方法是使用構(gòu)造函數(shù)注入。 showImg(https://mmbiz.qpic.cn/mmbiz_jpg/R3InYSAIZkHQ40ly9Oztiart2lESCyjCH0JwFRp3oErlYobhibM...
閱讀 1909·2021-11-11 16:55
閱讀 1483·2019-08-30 15:54
閱讀 802·2019-08-29 15:34
閱讀 2290·2019-08-29 13:11
閱讀 2939·2019-08-26 13:28
閱讀 1914·2019-08-26 10:49
閱讀 1022·2019-08-26 10:40
閱讀 2583·2019-08-23 18:21