PageHelper實現分頁


PageHelper實現分頁

如果你也在用 MyBatis,建議嘗試該分頁插件,這一定是最方便使用的分頁插件。分頁插件支持任何復雜的單表、多表分頁。——PageHelper官網。

后端實現

引入依賴

使用PageHelper之前,我們要先引入其依賴文件,或者jar包。這里使用maven項目演示,所以需要先引入依賴文件。

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.11</version>
</dependency>

在MyBatis配置文件中添加插件

使用PageHelper需要在MyBatis的全局配置文件中加入如下配置,其中數據庫的方言需要根據使用數據庫的情況自行配置。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<plugins>
		<!-- com.github.pagehelper 為 PageHelper 類所在包名 -->
		<plugin interceptor="com.github.pagehelper.PageHelper">
			<!-- 支持數據庫類型: Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL -->
			<property name="dialect" value="mysql"/>
		</plugin>
	</plugins>
</configuration>

創建PageResult類

使用分頁時,往往會向前端傳遞總頁數以及每頁的內容,即total和List 。鑒於在程序中我們會大量使用分頁,所以實現分頁的第一步就是創建一個PageResult類。

此類中包含total、rows兩個屬性。由於該類中的rows不代指任一類型,所以無法指定泛型。

如果要使用dubbo等RPC技術請務必實現Serializable接口。

package entity;

import java.io.Serializable;
import java.util.List;

/**
 * Created by rayfoo@qq.com Luna on 2020/4/13 0:44
 */
public class PageResult implements Serializable {
    //總記錄數
    private Long total;
    //當前頁內容
    private List rows;

    public Long getTotal() {
        return total;
    }

    public void setTotal(Long total) {
        this.total = total;
    }

    public List getRows() {
        return rows;
    }

    public void setRows(List rows) {
        this.rows = rows;
    }

    public PageResult(Long total, List rows) {
        this.total = total;
        this.rows = rows;
    }

    public PageResult() {
    }
}

編寫代碼

首先編寫Controlelr層代碼

  • 先創建一個findPage()方法,接收前端傳遞的需要查詢的頁碼(PageNo)和每頁數據的條目(PageSize)。
    @RequestMapping("/findPage")
    public PageResult findPage(Integer pageNo,Integer pageSize){
        return brandService.findPage(pageNo,pageSize);
    }

在Service層也非常簡單

  • 直接在查詢所有的語句的上一行加上PageHelper.startPage(pageNo,pageSize);就可以實現分頁查詢。
  • 在查詢所有時,需要將返回結果強轉為Page 對象。
      @Override
    public PageResult findPage(Integer pageNo, Integer pageSize) {
        //開啟分頁
        PageHelper.startPage(pageNo,pageSize);
        //查詢數據
        Page<User> page = (Page<Brand>) userMapper.selectByExample(null);
        //返回結果
        return new PageResult(page.getTotal(),page.getResult());
    }

測試

此時,直接在前端調用localhost:8080/user/findPage?pageNo=1&pageSize=5即可獲取第一頁的五條數據。


免責聲明!

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



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