一、pagehelper介绍
pagehepler是一款可以帮助我们快速实现分页的插件,总之就是比传统的分页方式方便太多。话不多说,直接上手pagehelper插件的使用。
二、需要导入的依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
三、在项目配置文件中添加配置
#pagehelper分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
四、写一个查询所有的mapper接口
查询所有成员
public List<member> select_member();
在mapper.xml中添加对应的方法
<select id="select_member" resultType="com.jsjgf.pojo.member">
select * from member
</select>
这里有关于实体类和mapper层的写法和以前的写法是一样的。
五、service层调用mapper层方法
@Override
public List<member> select_member() {
return memberMapper.select_member();
}
六、controller层
@RequestMapping("/selMemberPage")
public String pageHelper(@RequestParam(value="pageNo",defaultValue="1")int pageNo, @RequestParam(value="pageSize",defaultValue="7")int pageSize, Model model){
PageHelper.startPage(pageNo,pageSize);
List<member> members = memberService.select_member();
PageInfo<member> page = new PageInfo<>(members);
model.addAttribute("pageInfo",page);
return "index";
}
- 1、核心代码:PageHelper.startPage(pageNo,pageSize);其实就只有这一句,pageNo代表当前页码,pageSize代表显示的数据条数。
- 2、注意: PageHelper.startPage(pageNo,pageSize);它的下一句一定要跟查询语句,且只能对它后面跟着的第一条查询语句内容分页。
- 3、PageInfo page = new PageInfo<>(members);这一句将查询到的信息进行整理,pagehelper插件会自动帮我们做。
七、前端展示
这里可以使用各种前端模板引擎接收数据,以thymeleaf为例:
<li th:if="${pageInfo.hasPreviousPage}"><a th:href="@{'/selMemberPage?pageNo=1'}">首页</a></li>
<li th:if="${pageInfo.hasPreviousPage}"><a th:href="@{'/selMemberPage?pageNo='+${pageInfo.prePage}}">上一页</a></li>
<li th:if="${pageInfo.hasNextPage}"><a th:href="@{'/selMemberPage?pageNo='+${pageInfo.nextPage}}">下一页</a></li>
<li th:if="${pageInfo.hasNextPage}"><a th:href="@{'/selMemberPage?pageNo='+${pageInfo.pages}}">尾页</a></li>
由于太简单,只展示分页按钮。
八、插件属性扩展
1、pageInfo.pageNum:当前页号
2、pageInfo.pageSize:每页显示数
3、pageInfo.startRow:起始页
3、pageInfo.endRow:终止页
4、pageInfo.total:总数据数
5、pageInfo.pages:总页数
6、pageInfo.isFirstPage:是否为第一页
7、pageInfo.isLastPage:是否为最后一页
8、pageInfo.hasPreviousPage:是否有上一页
9、pageInfo.hasNextPage:是否有下一页