1.前端发送的请求参数(page,pageSize)
page:页码
pageSize:每页记录数
2.明确最终展示效果
根据每页展示记录数,以及总记录数,两者的商向上取整就是页码
后端需要响应给前端的数据有两个:
数据列表:即传统sql语句中带Limit的,limit的参数有两个,起始索引,每页展示记录数
总记录数:聚合函数的count(*)可以查询总记录数
3.后端控制器controller层中接收请求,返回值响应给前端
定义一个方法,参数有两个,一个是页码,一个是每页记录数.如果前端没有传参数给我们,这两个参数还需要一个默认值,这里需要用到@RequestParam注解,这个注解中有一个属性,defaultValue=" ",其中的值可以设置成我们想要的默认值
因为后端响应给前端的数据有两个,所以还需要在pojo层中定义一个pageBean实体类,把响应给前端的两个数据封装到pageBean对象中,在把pageBean对象封装到result中,再响应给前端
4.数据层service,执行逻辑代码
定义一个方法,controller层调用这个方法,并传递两个参数,page,pageSize,这个方法的返回值是一个pageBean对象
这里需要注意的是page这个参数并不能直接使用,因为真正执行的sql语句中,limit中需要两个值,一个是起始索引,一个是每页展示记录数.起始索引的值=(页码-1)*每页展示记录数
调用mapper层中的两个方法,一个方法的返回值是total:总记录数,一个方法的返回值是数据列表:一个List集合,这个集合的泛型是具体要查询的pojo类.最后把这两个方法的返回值封装到pageBean对象中,再返回给controller层
5.mapper层,数据访问层,操作myBatis数据库
定义两个方法,一个是查询总记录数,一个是查询数据列表
=====================================================================
简化开发:pageHelper插件
1.pom文件中引入坐标
2.在service层中
这个方法的参数还是一样,但是方法体中不需要再调用两个mapper层的方法,只需要正常的执行我们的查询逻辑,selectAll
pageHelper调用一个方法startPage,设置分页参数.这个方法的形参就是controller层传过来的两个形参,page,pageSize
调用Mapper层中的方法,返回值是一个List集合,再把这个集合对象强转成Page类型
最后这个方法的返回值还是pageBean对象,pageBean对象的两个属性:总记录数=p.getTotal(),数据列表=p.getResult()
3.mapper层
只需要执行一个方法,selectAll