在数据库中经常用到了分页的功能,原来的查询,要自己写一个 select count(*)
然后再写一个limit m,n
非常的麻烦。而且不同的数据库采用的分页方式还不一样,在mysql中用limit在其他的数据库比如Oracle中又不能用了。
新的插件 PageHelper非常的方便,他不影响原来的代码,直接插入即可。下面给出PageHelper的用法
1.maven项目:在pom.xml中导入依赖
<!--mybatis分页插件的使用-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.2</version>
</dependency>
如果不是maven项目,可以直接下载jar包
pageHelper5.1.2.jar
2. 在mybatis中配置,也有两种选择,可以写在mybaitis的配置文件中,也可以写在spring的配置文件中
mybatis配置文件:直接在文件中加入一下代码 要注意标签的顺序,在mybatis中标签是有先后顺序的 我的配置文件中只有别名,把该代码放在后面
<!--别名-->
<typeAliases>
<package name="com.hd.entity"></package>
<package name="com.hd.queryvo"></package>
</typeAliases>
<!--插件-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
</plugin>
</plugins>
- 接下来就可以使用了。只要在你需要分页的位置前输入代码
//开启分页 currentPage 当前页 pageSize 每页显示的数量
PageHelper.startPage(currentPage,pageSize);
List<Product> products =
productMapper.selectByCategoryIdOrKeywords(productQueryVo);
//分页数据的基本信息
//在pageInfo中封装了 一下属性
/*
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//排序
private String orderBy;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//第一页
private int firstPage;
//前一页
private int prePage;
//下一页
private int nextPage;
//最后一页
private int lastPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
*/
PageInfo<Product>pageInfo = new PageInfo<>(productList);