最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring-boot List轉(zhuǎn)Page的方法步驟

 更新時(shí)間:2019年03月01日 14:35:43   作者:陳杰  
這篇文章主要介紹了spring-boot List轉(zhuǎn)Page的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

需求:班級(jí)與教師是多對(duì)多關(guān)系,在后臺(tái)班級(jí)管理需要添加一個(gè)接口,傳入教師的id和pageable,返回帶分頁(yè)數(shù)據(jù)的班級(jí)信息。

Page<Klass> pageByTeacher(Long teacherId, Pageable pageable);

一開(kāi)始打算是在KlassRepository(繼承自PagingAndSortingRepository)中添加一個(gè)類(lèi)似findByElementId的接口,然后直接返回帶分頁(yè)的數(shù)據(jù)。但是試了幾次并不成功,無(wú)論是把teacher還是將帶teacher的List傳入方法中都失敗。

換了一種思路,直接調(diào)TeacherRepository的FindById()方法找到teacher,然后返回teacher的成員klassList就行了。

  Teacher teacher = teacherRepository.findById(teacherId).get();
  List<Klass> klassList = teacher.getKlassList();

但是光返回klassList還不行,需要將它包裝成Page才行,去官網(wǎng)上查到了一種使用List構(gòu)造Page的方法

PageImpl
public PageImpl(List<T> content,
Pageable pageable,
long total)
Constructor of PageImpl.
Parameters:
content - the content of this page, must not be null.
pageable - the paging information, must not be null.
total - the total amount of items available. The total might be adapted considering the length of the content given, if it is going to be the content of the last page. This is in place to mitigate inconsistencies.

參數(shù):

  • content: 要傳的List,不為空
  • pageable: 分頁(yè)信息,不為空
  • total: 可用項(xiàng)的總數(shù)。如果是最后一頁(yè),考慮到給定內(nèi)容的長(zhǎng)度,total可以被調(diào)整。這是為了緩解不一致性。(這句沒(méi)懂什么意思),可選

一開(kāi)始還以為它會(huì)自己按照傳入的參數(shù)分割List

Page<Klass> klassPage = new PageImpl<Klass>(klassList, pageable, klassList.size());

結(jié)果debug發(fā)現(xiàn)不行,得手動(dòng)分割,就去網(wǎng)上參考了別人的寫(xiě)法

 // 當(dāng)前頁(yè)第一條數(shù)據(jù)在List中的位置
  int start = (int)pageable.getOffset();
  // 當(dāng)前頁(yè)最后一條數(shù)據(jù)在List中的位置  
  int end = (start + pageable.getPageSize()) > klassList.size() ? klassList.size() : ( start + pageable.getPageSize());
  // 配置分頁(yè)數(shù)據(jù)
  Page<Klass> klassPage = new PageImpl<Klass>(klassList.subList(start, end), pageable, klassList.size());

debug查看結(jié)果


最后為了增加復(fù)用性,改成范型方法:

  public <T> Page<T> listConvertToPage(List<T> list, Pageable pageable) {
  int start = (int)pageable.getOffset();
  int end = (start + pageable.getPageSize()) > list.size() ? list.size() : ( start + pageable.getPageSize());
  return new PageImpl<T>(list.subList(start, end), pageable, list.size());
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java異常處理機(jī)制深入理解

    Java異常處理機(jī)制深入理解

    如果某個(gè)方法不能按照正常的途徑完成任務(wù),就可以通過(guò)另一種路徑退出方法。在這種情況下會(huì)拋出一個(gè)封裝了錯(cuò)誤信息的對(duì)象。此時(shí),這個(gè)方法會(huì)立刻退出同時(shí)不返回任何值。另外,調(diào)用這個(gè)方法的其他代碼也無(wú)法繼續(xù)執(zhí)行,異常處理機(jī)制會(huì)將代碼執(zhí)行交給異常處理器
    2022-01-01
  • JVM自定義類(lèi)加載器在代碼擴(kuò)展性實(shí)踐分享

    JVM自定義類(lèi)加載器在代碼擴(kuò)展性實(shí)踐分享

    這篇文章主要介紹了JVM自定義類(lèi)加載器在代碼擴(kuò)展性實(shí)踐分享,一個(gè)類(lèi)型從被加載到虛擬機(jī)內(nèi)存中開(kāi)始,到卸載出內(nèi)存為止,它的整個(gè)生命周期將會(huì)經(jīng)歷加載、驗(yàn)證、準(zhǔn)備、解析、初始化 、使用和卸載七個(gè)階段,其中驗(yàn)證、準(zhǔn)備、解析三個(gè)部分統(tǒng)稱(chēng)為連接
    2022-06-06
  • SpringBoot3配置Logback日志滾動(dòng)文件的方法

    SpringBoot3配置Logback日志滾動(dòng)文件的方法

    本文介紹了在SpringBoot3中配置Logback日志滾動(dòng)文件的方法,因?yàn)镾pringBoot3內(nèi)置的logback版本是1.4.14,之前使用SpringBoot2.1.5的logback配置發(fā)現(xiàn)有些東西不能生效了,需要的朋友可以參考下
    2024-08-08
  • idea右鍵沒(méi)有java class選項(xiàng)問(wèn)題解決方案

    idea右鍵沒(méi)有java class選項(xiàng)問(wèn)題解決方案

    這篇文章主要介紹了idea右鍵沒(méi)有java class選項(xiàng)問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 淺談String、StringBuffer和StringBuilder之間的區(qū)別

    淺談String、StringBuffer和StringBuilder之間的區(qū)別

    這篇文章主要介紹了淺談String、StringBuffer和StringBuilder之間的區(qū)別,通過(guò)字面量方式為字符串賦值時(shí),此時(shí)的字符串存儲(chǔ)在方法區(qū)的字符串常量池中,需要的朋友可以參考下
    2023-10-10
  • 淺談java中字符串?dāng)?shù)組、字符串、整形之間的轉(zhuǎn)換

    淺談java中字符串?dāng)?shù)組、字符串、整形之間的轉(zhuǎn)換

    這篇文章主要介紹了淺談java中字符串?dāng)?shù)組、字符串、整形之間的轉(zhuǎn)換,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • java輸入時(shí)如何通過(guò)回車(chē)(enter)來(lái)結(jié)束輸入

    java輸入時(shí)如何通過(guò)回車(chē)(enter)來(lái)結(jié)束輸入

    這篇文章主要介紹了java輸入時(shí)如何通過(guò)回車(chē)(enter)來(lái)結(jié)束輸入,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Spring中ClassPath指的是哪些地方

    Spring中ClassPath指的是哪些地方

    在Spring應(yīng)用中,ClassPath指的是應(yīng)用程序的類(lèi)加載路徑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Java訪問(wèn)修飾符public、private、protected及默認(rèn)訪問(wèn)權(quán)限詳解

    Java訪問(wèn)修飾符public、private、protected及默認(rèn)訪問(wèn)權(quán)限詳解

    這篇文章主要介紹了Java訪問(wèn)修飾符public、private、protected及默認(rèn)訪問(wèn)權(quán)限的相關(guān)資料,每種修飾符都有其特定的使用場(chǎng)景,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • 微服務(wù)之間如何通過(guò)feign調(diào)用接口上傳文件

    微服務(wù)之間如何通過(guò)feign調(diào)用接口上傳文件

    這篇文章主要介紹了微服務(wù)之間如何通過(guò)feign調(diào)用接口上傳文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

甘洛县| 色达县| 河津市| 醴陵市| 阜宁县| 耒阳市| 合作市| 淮阳县| 柳河县| 宝坻区| 赣州市| 永泰县| 莱芜市| 芦溪县| 阆中市| 澜沧| 宣城市| 塔城市| 子洲县| 象山县| 鹰潭市| 双鸭山市| 年辖:市辖区| 茶陵县| 龙泉市| 滦平县| 浮梁县| 松滋市| 桦南县| 台山市| 德兴市| 尼木县| 克山县| 固始县| 崇文区| 珲春市| 唐河县| 繁昌县| 镇平县| 申扎县| 博罗县|