🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
Mybatis分页插件官方文档:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md **** :-: ![](https://img.kancloud.cn/9f/ae/9fae33f68fd76e6d718c38360cc08865_894x444.png) Mybatis分页插件原理 <br/> SpringBoot 整合 Mybatis 分页插件的步骤如下: **1. `pom.xml`添加如下三个依赖** ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency> <!--pagehelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency> ``` **2. `resources/application.yml`** ```yml mapper: not-empty: false identity: MYSQL pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql ``` **3. 在controller层调用`PageHelper`来完成分页** ```java @Controller @RequestMapping("/student") public class StudentController { @Autowired private StudentDao studentDao; @ResponseBody @RequestMapping("/find/page") public PageInfo findPage() { //1. 必须在调用查询的方法之前调用startPage方法 //startPage(int pageNum, int pageSize) //pageNum:当前页码,从0或1开始都可以,0、1都为第1页 //pageSize:页面容量 PageHelper.startPage(0, 3); //2. 必须紧跟startPage方法后面调用查询方法 //select id,`name`,age,gender from `student` List<Student> studentList = studentDao.findByPage(); //3. 使用查询结果的studentList创建PageInfo PageInfo<Student> pageInfo = new PageInfo<>(studentList); System.out.println("查询记录:" + pageInfo.getList()); System.out.println("当前页:" + pageInfo.getPageNum()); //当前页:1 System.out.println("总页数:" + pageInfo.getPages()); //总页数:2 System.out.println("页面容量:" + pageInfo.getSize()); //页面容量:3 System.out.println("总记录:" + pageInfo.getTotal()); //总记录:5 return pageInfo; } } ``` **4. PageInfo其它属性** ```java private int pageNum; // 当前页 private int pageSize; // 每页的数据数量 private int size; // 当前页的数据数量 private int startRow; // 当前页面第一个数据在数据库中的行号 private int endRow; // 当前页面最后一个数据在数据库中的行号 private int pages; // 总页数 private int prePage; // 上一页 private int nextPage; // 下一页 private boolean isFirstPage; // 当前页是否为第一页 private boolean isLastPage; // 当前页是否为最后一页 private boolean hasPreviousPage; // 是否有上一页 private boolean hasNextPage; // 是否有下一页 private int navigatePages; // 导航页码数(即当前页面放多少个按钮) private int[] navigatepageNums; // 所有导航页号(即当前页面存放按钮的编号) private int navigateFirstPage; // 当前页的第一个按钮 private int navigateLastPage; // 当前页的最后一个按钮 List<T> list; // 当前页面要显示的数据 ```