亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

卢湾区| 康保县| 兴仁县| 清丰县| 徐闻县| 东港市| 华池县| 什邡市| 始兴县| 南部县| 辉县市| 阳信县| 方城县| 安国市| 棋牌| 八宿县| 平武县| 肥西县| 南投县| 肃北| 松潘县| 鄂尔多斯市| 仪陇县| 鄂托克旗| 江油市| 平顺县| 五寨县| 个旧市| 延吉市| 湟源县| 甘孜| 长丰县| 四川省| 东方市| 桃园县| 安泽县| 靖江市| 郎溪县| 明水县| 保亭| 澎湖县|