尋找寫代碼感覺(十一)之使用PageHelper實現后端分頁


一、PageHelper是什么?

是一個插件,可以控制接口顯示數據,其原理就是Mybatis攔截器,攔截到SQL后,增加limit關鍵字,實現對查詢結果的控制。

二、如何使用

1、在pom中加上依賴

<!-- pagehelper 插件-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.13</version>
</dependency>

2、修改Service層中代碼

使用PageHelper進行分頁設置,示例代碼如下:

package com.rongrong.wiki.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.rongrong.wiki.domain.EBook;
import com.rongrong.wiki.domain.EBookExample;
import com.rongrong.wiki.mapper.EBookMapper;
import com.rongrong.wiki.req.EBookReq;
import com.rongrong.wiki.resp.EBookResp;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

import javax.annotation.Resource;
import java.util.List;

import static com.rongrong.wiki.util.CopyUtil.copyList;

/**
 * @author rongrong
 * @version 1.0
 * @description
 * @date 2021/10/13 23:09
 */
@Service
public class EBookService {

    @Resource
    private EBookMapper eBookMapper;

    public List<EBookResp> list(EBookReq eBookReq) {
        EBookExample eBookExample = new EBookExample();
        //此處代碼的意思相當於,搞了一個Sql的where條件
        EBookExample.Criteria criteria = eBookExample.createCriteria();
        //划波浪線為不推薦使用,這里我們去看源代碼做個替換即可
        if (!ObjectUtils.isEmpty(eBookReq.getName())) {
            criteria.andNameLike("%" + eBookReq.getName() + "%");
        }
        //控制請求后,每頁顯顯示3條數據
        PageHelper.startPage(1,3);
        List<EBook> eBookList = eBookMapper.selectByExample(eBookExample);
        PageInfo<EBook> pageInfo = new PageInfo(eBookList);
        System.out.println(pageInfo.getTotal());
        System.out.println(pageInfo.getPages());
        //List<EBookResp> eBookRespList = new ArrayList<>();
        //for (EBook eBook: eBookList) {
        //    //EBookResp eBookResp = new EBookResp();
        //    ////spring boot 自帶的BeanUtils完成對象的拷貝
        //    //BeanUtils.copyProperties(eBook, eBookResp);
        //    //eBookResp.setId(12345L);
        //    //單體復制
        //    EBookResp copy = copy(eBook, EBookResp.class);
        //    eBookRespList.add(copy);
        //}
        //列表復制
        List<EBookResp> respList = copyList(eBookList, EBookResp.class);
        return respList;
    }
}

3、修改后調用顯示

控制台顯示:

前端頁面顯示:

個人感覺還是比較簡單的,而且使用方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM