您好,登錄后才能下訂單哦!
這篇“Java項目開發中怎么實現分頁”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java項目開發中怎么實現分頁”文章吧。
Java項目開發中經常要用到分頁功能,現在普遍使用SpringBoot進行快速開發,而數據層主要整合SpringDataJPA和MyBatis兩種框架,這兩種框架都提供了相應的分頁工具,使用方式也很簡單,可本人在工作中除此以外還用到第三種更方便靈活的分頁方式,在這里一同分享給大家。
主要分為SpringDataJPA分頁、MyBatis分頁、Hutools工具類分頁幾個部分
1)、引入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
2)、Service中編寫分頁服務
SpringDataJPA分頁就是定義Pageable對象來處理分頁,其中PageRequest來定義分頁參數,Page對象來接手查詢結果進行分頁包裝,包裝后的結果pageResult可以得到總記錄數、總頁數、分頁列表等數據結果。
/** * 根據doctorId查詢全部關注列表【分頁】 * * @param doctorId 醫生id * @return 結果集 */ public Map<String, Object> findAllListByDoctorId(Long doctorId, Integer pageIndex, Integer pageSize) { Pageable pageable = PageRequest.of(pageIndex - 1, pageSize); // 分頁 Page<Follow> pageResult = followRepository.findByDoctorIdOrderByCreatedAtDesc(doctorId, pageable); List<FollowDTO> dtoList = followMapper.toDto(pageResult.getContent()); if (!CollectionUtils.isEmpty(dtoList)) { // 處理業務邏輯.... } // 封裝分頁結果 Map<String, Object> map = new HashMap<>(); map.put("pageIndex", pageIndex.toString()); // 當前頁 map.put("pageSize", pageSize.toString()); // 每頁條數 map.put("total", Long.toString(pageResult.getTotalElements())); // 總記錄數 map.put("pages", Integer.toString(pageResult.getTotalPages())); // 總頁數 map.put("list", dtoList); // 數據列表 return map; }
3)、Repository中處理分頁
這里就是繼承JpaRepository對象,然后傳入service中定義好的pageable對象,并且返回Page包裝的結果即可。
import com.patient.domain.Follow; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; @Repository public interface FollowRepository extends JpaRepository<Follow, Long> { Page<Follow> findByDoctorIdOrderByCreatedAtDesc(Long doctorId, Pageable pageable); }
1)、引入PageHelper依賴
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> </dependency>
2)、使用PageHelper實現分頁
/** * 查詢推廣人員列表,分頁。 * @return 封裝的分頁結果對象 */ public PageResult findPromotePersonList(String hospitalCode,PromotePersonReq promotePersonReq) { Integer pageIndex = promotePersonReq.getPageIndex(); Integer pageSize = promotePersonReq.getPageSize(); PageHelper.startPage(pageIndex, pageSize); // 每頁的大小為pageSize,查詢第page頁的結果 List<PromotePerson> list = promotePersonMapper.selectAll(); PageInfo<PromotePerson> pageInfo = new PageInfo<>(list); PageHelper.clearPage(); // 返回分頁結果 PageResult pageResult = new PageResult(); pageResult.setPageIndex(pageIndex); pageResult.setPageSize(pageSize); pageResult.setPages(pageInfo.getPages()); pageResult.setTotal((int) pageInfo.getTotal()); pageResult.setList(list); return pageResult; }
1)、引入依賴
這里是可以單獨引入hutools部分工具類的,具體參考官網文檔,我平時寫項目一定會使用這個工具,所以直接引入了所有。
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.1.2</version> </dependency>
2)、分頁實現
一般就用到兩個工具類,一是PageUtil.totalPage(總記錄數, 每頁記錄數)來計算總頁數,二是CollUtil.page(索引, 每頁記錄數, 數據列表)來返回指定分頁結果,注意這里的索引是從1開始的,和SpringDataJPA分頁索引從0開始有區別。
/** * 我的訂單-待支付[分頁] * * @param openid 用戶唯一標識 * @return 結果集 */ public Map<String, Object> findMyOrderNotPay(String openid, Integer pageIndex, Integer pageSize) { Map<String, Object> map = new HashMap<>(); // 查詢 List<ConsultOrder> orderList = consultOrderRepository.findMyOrderNotPay(openid); if (CollectionUtils.isEmpty(orderList)) { map.put("pageIndex", pageIndex.toString()); // 當前頁 map.put("pageSize", pageSize.toString()); // 每頁條數 map.put("total", "0"); // 總記錄數 map.put("pages", "0"); // 總頁數 map.put("list", new ArrayList<>()); // 數據列表 return map; } List<OrderVO> pageList = new ArrayList<>(); int totalSize = 0; int totalPage = 0; // 計算總頁數 totalSize = orderList.size(); totalPage = PageUtil.totalPage(totalSize, pageSize); // 分頁,索引小于等于總頁數,才返回列表. if (pageIndex <= totalPage) { // 分頁 pageList = CollUtil.page(pageIndex, pageSize, orderVOList); } // 返回結果 map.put("pageIndex", Integer.toString(pageIndex)); // 當前頁 map.put("pageSize", Integer.toString(pageSize)); // 每頁條數 map.put("total", Integer.toString(totalSize)); // 總記錄數 map.put("pages", Integer.toString(totalPage)); // 總頁數 map.put("list", pageList); // 數據列表 return map; }
以上就是關于“Java項目開發中怎么實現分頁”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。