🔥码云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/> 使用步骤如下: **1. 引入pagehelper插件** ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.0</version> </dependency> ``` **2. 插件配置** *`resources/mybatis-config.xml`* ```xml <!-- 需放在<typeAliases/>之后,放在<environments/>之前 --> <plugins> <!-- 关于下面的属性的意义可以参考官方文档 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="helperDialect" value="mysql"/> <property name="offsetAsPageNum" value="false"/> <property name="rowBoundsWithCount" value="true"/> <property name="pageSizeZero" value="true"/> <property name="reasonable" value="true"/> </plugin> </plugins> ``` **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; // 当前页面要显示的数据 ```