一:简介
PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql、oracle、mariaDB、DB2、SQLite、Hsqldb等。
二:快速入门
1、导入相关依赖
<!-- pageheaper 分页插件的依赖-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version>
</dependency>
2、设计一个PageBean类
@Data
public class PageBean{
private Long total;//表示 总记录数
private List rows;//表示 查询的每行数据
}
3、controller(接受请求,完成响应)
//员工管理 的 控制层
@RestController
@RequestMapping("/emps")
@Slf4j
public class EmpController {
//依赖service
@Autowired
private EmpService empService;
/*
设计 分页查询 (条件分页 先不管条件 先完成分页查询)
@RequestParam(defaultValue = "1") Integer page
表示page的默认值是1
*/
@GetMapping
public Result page(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10")Integer pageSize){
log.info("当前查询的页码是:"+page);
log.info("当前分页查询每页显示条数是:"+pageSize);
// 调用 service 进行分页查询 返回一个 PageBean对象
PageBean pageBean = empService.getPageBean(page,pageSize);//记得传递 页码和每页显示条数
//把pageBean封装到Result中
return Result.success(pageBean);
}
}
4、service封装PageBean对象,按照插件方式使用
@Override
public PageBean getPageBean(Integer page, Integer pageSize) {
/*
官方给的参考步骤
1:你的mapper中 只需要提供 基础查询的功能即可 (不写count 不写 limit)
2: service层在调用 mapper方法之前
先 设置一个分页参数 步骤是固定步骤
*/
// 设置分页参数
PageHelper.startPage(page,pageSize);//从这里开始做分页 传递两个参数 当前页码 每页显示条数
// 执行 分页查询
List<Emp> empList = empMapper.page();
// 得到结果 其实 底层是 List的一个实现类对象
// 这个对象的类型 叫Page import com.github.pagehelper.Page;
Page<Emp> p = (Page)empList;
// p 就是 用于 存储 分页查询数据的一个对象
long total = p.getTotal();//总记录数
List<Emp> rows = p.getResult();//当前页的数据
PageBean pb = new PageBean(total,rows);//把 p里面的数据给 pb
return pb;
}
5、mapper层(访问数据库)简化了只写了基础查询
@Mapper//加注解哦
public interface EmpMapper {
@Select("select * from emp")
List<Emp> page();//不要分页参数
}
基础用法就是这样,剩下的就靠小伙伴们慢慢探索吧