這篇文章,主要介紹框架集成分頁插件以及自定義分頁工具類。
目錄
一、集成分頁插件
是一個第三方的分頁插件,它是基于攔截器實現(xiàn)的,也就是在執(zhí)行SQL語句執(zhí)行,攔截到SQL語句,然后添加分頁的語句,例如:MySQL數(shù)據(jù)庫則添加limit分頁分頁文件大小是什么,數(shù)據(jù)庫則添加分頁,插件非常的強大,它可以動態(tài)的解析使用的數(shù)據(jù)庫類型,從而采取正確的分頁功能。具體可以看下官方文檔【】,如下圖所示:
1.1、引入依賴
提供了的啟動器分頁文件大小是什么,我們只需要引入【--boot-】依賴即可。
com.github.pagehelper
pagehelper-spring-boot-starter
1.4.0
1.2、使用分頁
package com.spring.boot.demo.controller;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.spring.boot.demo.mapper.UserMapper;
import com.spring.boot.demo.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author ZhuYouBin
* @version 1.0.0
* @Date: 2022/11/13 21:25
* @Description
*/
@RestController
@RequestMapping("/api")
public class TestController {
@Autowired
private UserMapper userMapper;
@GetMapping("/pageHelper")
public PageInfo query(Integer pageSize, Integer pageNum) {

// 開啟分頁
PageHelper.startPage(pageNum, pageSize);
// 查詢數(shù)據(jù)庫
List list = userMapper.queryList();
// 封裝查詢結果
PageInfo pageInfo = new PageInfo<>(list);
return pageInfo;
}
}
1.3、運行測試
啟動工程,瀏覽器訪問【:8080/api/?=1&=3】,結果如下所示:
1.4、創(chuàng)建對象
返回的是一個對象,但是這個對象返回的字段太多了,實際開發(fā)中,完全沒必要返回這這么多字段,我們只需要個別字段即可,所以這里自定義一個分頁對象,代碼如下:
package com.spring.boot.demo.pojo;
import java.io.Serializable;
/**
* @author ZhuYouBin
* @version 1.0.0
* @Date: 2022/11/13 21:34
* @Description 分頁實體類對象
*/
public class PageVo implements Serializable {
/**
* 分頁頁碼, 查詢哪一頁的數(shù)據(jù)
*/
private int pageNum;
/**
* 每一頁顯示記錄數(shù)量
*/
private int pageSize;
/**
* 查詢總記錄數(shù)量
*/
private long total;
/**
* 總頁數(shù)

*/
private int pages;
/**
* 查詢數(shù)據(jù)結果集
*/
private Object list;
public PageVo() {}
public PageVo(int pageNum, int pageSize) {
this.pageNum = pageNum;
this.pageSize = pageSize;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public int getPages() {
return pages;
}

public void setPages(int pages) {
this.pages = pages;
}
public Object getList() {
return list;
}
public void setList(Object list) {
this.list = list;
}
@Override
public String toString() {
return "PageVo{" +
"pageNum=" + pageNum +
", pageSize=" + pageSize +
", total=" + total +
", pages=" + pages +
", list=" + list +
'}';
}
}
1.5、封裝工具類
package com.spring.boot.demo.util;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.spring.boot.demo.pojo.PageVo;
import java.util.List;
import java.util.Objects;
/**
* @author ZhuYouBin
* @version 1.0.0
* @Date: 2022/11/13 21:40
* @Description 自定義分頁工具類
*/

public class PageUtil {
/**
* 開啟分頁
* @param pageVo 分頁參數(shù)對象
* @return
*/
public static PageVo startPage(PageVo pageVo) {
int pageNum = 0;
int pageSize = 0;
if (!Objects.isNull(pageVo)) {
pageNum = pageVo.getPageNum();
pageSize = pageVo.getPageSize();
} else {
pageVo = new PageVo();
}
// 開啟分頁
PageHelper.startPage(pageNum, pageSize);
return pageVo;
}
/**
* 結束分頁
* @param pageVo 分頁參數(shù)對象
* @param list 查詢數(shù)據(jù)結果集
* @return
*/
public static PageVo endPage(PageVo pageVo, List list) {
// 封裝查詢結果
PageInfo pageInfo = new PageInfo<>(list);
pageVo.setList(list);
pageVo.setTotal(pageInfo.getTotal());
pageVo.setPages(pageInfo.getPages());
// 清除分頁參數(shù)對象
PageHelper.clearPage();
return pageVo;
}
}
1.6、編寫測試類
package com.spring.boot.demo.controller;
import com.spring.boot.demo.mapper.UserMapper;
import com.spring.boot.demo.pojo.PageVo;
import com.spring.boot.demo.pojo.User;
import com.spring.boot.demo.util.PageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author ZhuYouBin
* @version 1.0.0
* @Date: 2022/11/13 21:25
* @Description
*/
@RestController
@RequestMapping("/api")
public class TestController {
@Autowired
private UserMapper userMapper;
@GetMapping("/pageHelper02")
public PageVo query02(Integer pageSize, Integer pageNum) {
PageVo pageVo = new PageVo(pageNum, pageSize);
// 開啟分頁
PageUtil.startPage(pageVo);
// 查詢數(shù)據(jù)庫
List list = userMapper.queryList();
// 封裝查詢結果
return PageUtil.endPage(pageVo, list);
}
}
重新啟動工程,瀏覽器訪問【:8080/api/?=2&=3】,查看結果如下所示。
到此,框架集成分頁插件就成功啦。
綜上,這篇文章結束了,主要介紹框架集成分頁插件以及自定義分頁工具類。