中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在spring-boot中將List轉換為Page

發布時間:2021-02-22 17:42:14 來源:億速云 閱讀:683 作者:戴恩恩 欄目:編程語言

這篇文章主要為大家詳細介紹了如何在spring-boot中將List轉換為Page,文中示例代碼介紹的非常詳細,具有一定的參考價值,發現的小伙伴們可以參考一下:

需求:班級與教師是多對多關系,在后臺班級管理需要添加一個接口,傳入教師的id和pageable,返回帶分頁數據的班級信息。

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

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

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

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

但是光返回klassList還不行,需要將它包裝成Page才行,去官網上查到了一種使用List構造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.

參數:

  • content: 要傳的List,不為空

  • pageable: 分頁信息,不為空

  • total: 可用項的總數。如果是最后一頁,考慮到給定內容的長度,total可以被調整。這是為了緩解不一致性。(這句沒懂什么意思),可選

一開始還以為它會自己按照傳入的參數分割List

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

如何在spring-boot中將List轉換為Page

結果debug發現不行,得手動分割,就去網上參考了別人的寫法

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

debug查看結果

如何在spring-boot中將List轉換為Page

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

  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());
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

光泽县| 上饶市| 玛沁县| 桐乡市| 凤凰县| 松溪县| 固阳县| 金昌市| 尼玛县| 宜都市| 洪洞县| 河源市| 寿光市| 阳高县| 越西县| 承德县| 资源县| 高邮市| 盐边县| 南涧| 牡丹江市| 兴山县| 西林县| 谢通门县| 同仁县| 关岭| 巍山| 巴马| 阳曲县| 宿松县| 白山市| 阜宁县| 彰武县| 溧阳市| 榆中县| 甘肃省| 屯昌县| 金门县| 元江| 沭阳县| 固原市|