[Spring Boot實戰系列] - No.6 Springboot PageHelper實現後臺分頁
阿新 • • 發佈:2018-12-04
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
具體的實現原理在這裡不再記錄,有興趣的同學可以參考這篇文章。