[Spring Boot实战系列] - No.6 Springboot PageHelper实现后台分页

版权声明:Copyright©TJU YanMing https://blog.csdn.net/tjuyanming/article/details/83313277

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具体的实现原理在这里不再记录,有兴趣的同学可以参考这篇文章

猜你喜欢

转载自blog.csdn.net/tjuyanming/article/details/83313277