1. 程式人生 > >No.6 Springboot PageHelper實現後臺分頁

No.6 Springboot PageHelper實現後臺分頁

Springboot PageHelper實現後臺分頁

PageHelper是一個很強大的分頁外掛,在Springboot的專案中,如果後臺突然需要改為分頁返回,甚至無需更改過多程式碼即可獲得分頁的結果。

1. 前期程式碼準備

建立一個springboot專案,配置資料庫以及mybatis,配置過程參考之前的文章。在pom.xml中新增PageHelper的依賴。建立User實體,UserMapper,以及UserService

User

public class User {

    private int id;
    private String name;
    private
String password; public User(){} public User(int id,String name,String password){ this.id = id; this.name = name; this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } public
String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }

UserMapper

@Mapper()
public
interface UserMapper { @Select("select * from user") List<User> selectUsers(); }

UserService

@Service
public class UserService {

    @Autowired
    UserMapper userMapper;

    public List<User> getAllUserPage(){
        return userMapper.selectUsers();
    }
}

2. 使用PageHelper進行分頁

在Controller中,在返回資料之前宣告PageHelper攔截器,然後返回PageInfo<>

@GetMapping(value = "/getUser")
public Object getUser(@RequestParam("pageNum") Integer pageNum,@RequestParam("pageSize") Integer pageSize){
    if(pageNum==null||pageSize==null){
        return "引數錯誤";
    }
    else{
        //聲明當前頁數和每頁大小
        PageHelper.startPage(pageNum,pageSize);
        //將結果包裝到PageInfo中
        return new PageInfo<>(userService.getAllUserPage());
    }

}

使用postman測試http://localhost:8080/getUser?pageNum=3&&pageSize=3

返回的資料格式如下所示:

{
    "pageNum": 3, 			//當前頁頁數
    "pageSize": 3, 			//每一頁大小
    "size": 2, 				//當前頁大小(有多少條記錄)
    "startRow": 7, 			//當前頁開始記錄是資料庫中的第幾條記錄
    "endRow": 8, 			//當前頁結束記錄是資料庫中的第幾條記錄
    "total": 8, 			//一共有多少記錄
    "pages": 3, 			//一共有多少頁
    "list": [   			//該分頁返回的資料列表
        {
            "id": 7,
            "name": "name7",
            "password": "1231"
        },
        {
            "id": 8,
            "name": "name8",
            "password": "123132"
        }
    ],
    "prePage": 2,			//前面一頁是第幾頁
    "nextPage": 0,			//後面一頁是第幾頁(0表示沒了)
    "isFirstPage": false, 	//是否是第一頁
    "isLastPage": true,		//是否是最後一頁
    "hasPreviousPage": true,//前面是否還有頁
    "hasNextPage": false,	//後面是否還有頁
    "navigatePages": 8,		//前端導航頁展示頁面數量 例如:  上一頁 3 4 5 6 7 8 9 10 下一頁
    "navigatepageNums": [	//前端導航欄頁碼號列表
        1,	
        2,
        3
    ],
    "navigateFirstPage": 1, //導航上第一頁頁號
    "navigateLastPage": 3,  //導航上最後一頁是多少
    "firstPage": 1,         //第一頁頁號
    "lastPage": 3			//最後一頁頁號
}

PageInfo返回的資料非常全面,便於前端很好的編寫控制導航欄的邏輯。
PageHelper具體的實現原理在這裡不再記錄,有興趣的同學可以參考這篇文章