[Spring Boot實戰系列] - 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具體的實現原理在這裏不再記錄,有興趣的同學可以參考這篇文章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章