91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何在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

连平县| 丹江口市| 简阳市| 兴宁市| 台北市| 江华| 温泉县| 电白县| 璧山县| 通许县| 乌拉特后旗| 六枝特区| 邓州市| 海原县| 保康县| 西宁市| 济阳县| 巴青县| 邢台市| 浙江省| 肇源县| 湘潭县| 徐闻县| 苍梧县| 宾川县| 宜宾市| 剑川县| 信宜市| 六安市| 锦州市| 凌源市| 合水县| 内江市| 亳州市| 阜康市| 自贡市| 绩溪县| 剑河县| 仙游县| 察雅县| 漠河县|