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

溫馨提示×

溫馨提示×

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

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

Java項目開發中怎么實現分頁

發布時間:2022-02-07 09:55:10 來源:億速云 閱讀:255 作者:iii 欄目:開發技術

這篇“Java項目開發中怎么實現分頁”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java項目開發中怎么實現分頁”文章吧。

前言

Java項目開發中經常要用到分頁功能,現在普遍使用SpringBoot進行快速開發,而數據層主要整合SpringDataJPA和MyBatis兩種框架,這兩種框架都提供了相應的分頁工具,使用方式也很簡單,可本人在工作中除此以外還用到第三種更方便靈活的分頁方式,在這里一同分享給大家。

使用

主要分為SpringDataJPA分頁、MyBatis分頁、Hutools工具類分頁幾個部分

1、SpringDataJPA分頁

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

2、MyBatis分頁

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

3、Hutools工具類分頁

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項目開發中怎么實現分頁”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

曲沃县| 尉氏县| 巴林右旗| 临沂市| 文昌市| 八宿县| 苏尼特左旗| 阿坝| 雷波县| 东安县| 突泉县| 海晏县| 岳阳县| 科技| 筠连县| 彰化市| 松潘县| 鄂托克前旗| 九寨沟县| 双辽市| 建始县| 柞水县| 海宁市| 鹰潭市| 咸宁市| 宣恩县| 南华县| 江川县| 息烽县| 长沙县| 阿拉善左旗| 芮城县| 庐江县| 宁夏| 聂荣县| 兴文县| 开远市| 敦化市| 临武县| 崇信县| 高台县|