PageHelper实现分页
PageHelper实现分页
如果你也在⽤ MyBatis,建议尝试该分页插件,这⼀定是最⽅便使⽤的分页插件。分页插件⽀持任何复杂的单表、多表分页。——PageHelper官⽹。
后端实现
引⼊依赖
使⽤PageHelper之前,我们要先引⼊其依赖⽂件,或者jar包。这⾥使⽤maven项⽬演⽰,所以需要先引⼊依赖⽂件。
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.11</version>
</dependency>
在MyBatis配置⽂件中添加插件
使⽤PageHelper需要在MyBatis的全局配置⽂件中加⼊如下配置,其中数据库的⽅⾔需要根据使⽤数据库的情况⾃⾏配置。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3-config.dtd">
<configuration>
<plugins>
<!-- com.github.pagehelper 为 PageHelper 类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- ⽀持数据库类型: Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL -->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
</configuration>
创建PageResult类
使⽤分页时,往往会向前端传递总页数以及每页的内容,即total和List。鉴于在程序中我们会⼤量使⽤分页,所以实现分页的第⼀步就是创建⼀个PageResult类。
此类中包含total、rows两个属性。由于该类中的rows不代指任⼀类型,所以⽆法指定泛型。
如果要使⽤dubbo等RPC技术请务必实现Serializable接⼝。
package entity;
分页预览import java.io.Serializable;
import java.util.List;
/**
* Created by rayfoo@qq Luna on 2020/4/13 0:44
*/
public class PageResult implements Serializable {
//总记录数
private Long total;
//当前页内容
private List rows;
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
}
public List getRows() {
return rows;
}
public void setRows(List rows) {
}
public PageResult(Long total, List rows) {
}
public PageResult() {
}
}
编写代码
⾸先编写Controlelr层代码
先创建⼀个findPage()⽅法,接收前端传递的需要查询的页码(PageNo)和每页数据的条⽬(PageSize)。
@RequestMapping("/findPage")
public PageResult findPage(Integer pageNo,Integer pageSize){
return brandService.findPage(pageNo,pageSize);
}
在Service层也⾮常简单
直接在查询所有的语句的上⼀⾏加上PageHelper.startPage(pageNo,pageSize);就可以实现分页查询。
在查询所有时,需要将返回结果强转为Page对象。
@Override
public PageResult findPage(Integer pageNo, Integer pageSize) {
//开启分页
PageHelper.startPage(pageNo,pageSize);
//查询数据
Page<User> page = (Page<Brand>) userMapper.selectByExample(null);
//返回结果
return new Total(),Result());
}
测试
此时,直接在前端调⽤localhost:8080/user/findPage?pageNo=1&pageSize=5即可获取第⼀页的五条数据。