学习之前要确保已经熟悉springboot的使用以及mybatis的使用:
话不多上,先上依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.3</version>
</dependency>
这里版本建议和我的一致,不然可能出现结果集list加载不出来的情况。
使用的前提是数据库以及mybatis已经配置好了。
首先先在dao层的接口里面配置上查询所有的方法:
dao层接口:
//存储Blog
int saveBlog(Blog blog);
接着配置好mapper:
mapper:
<!--查找全部博客-->
<select id="queryBlog" resultType="com.hncu.cocoblog.entities.Blog">
select * from t_blog
</select>
针对各位自己的项目或者上手,就是在dao层写上查询所有记录的方法,在mapper进行好配置。
接下来就是如何使用了:
Service层:
@Override
public PageInfo findPage(int page, int pageSize) {
PageHelper.startPage(page,pageSize);
List<Blog> list=blogDao.queryBlog(); //这里的是我的查询所有的方法,根据情况,改成自己的
PageInfo<Blog> pageInfo=new PageInfo<Blog>(list); //将list(全部结果传进去) 泛型根据情况而定
return pageInfo; //返回pageInfo对象给controller
}
Service层写完了,接下来是Controller:
// 分页查询博客
@GetMapping("/getBlogByPage/{page}")
public String getBlogByPage(@PathVariable("page") Integer page, Model model) {
PageInfo<Blog> pageInfo = blogService.findPage(page, 8); //获取指定页的8条信息
//这些信息都需要传递到前端做分页
model.addAttribute("pageNum", pageInfo.getPageNum());//得到当前页
model.addAttribute("pages", pageInfo.getPages()); //得到总页数
model.addAttribute("list", pageInfo.getList()); //将分页得到的list集合返回到前端
return "manageBlog";
}
通过从Service层传上来的pageInfo对象来获取需要的信息,而我们只需要向Service传递两个参数PageHelper.startPage(page,pageSize);
,一个是页码,一个是每页的记录数目。
以上就是pagehelper的使用,接下来看一下参数:
public class PageInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow 和endRow 不常用,这里说个具体的用法
//可以在页面中"显示startRow 到endRow 共size 条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
}
这些信息我们都可以通过pageInfo的set/get方法来获取即可!