1、集成pagehelper starter
<!-- 4.1、集成分页功能starter --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.4</version> </dependency> |
2、集成pageHelper
<!-- 4.2、分页功能 pagehelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.3</version> </dependency> |
3、新建一个分页返回的视图对象
//当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int size; //排序 private String orderBy;
//由于startRow和endRow不常用,这里说个具体的用法 //可以在页面中"显示startRow到endRow 共size条数据"
//当前页面第一个元素在数据库中的行号 private int startRow; //当前页面最后一个元素在数据库中的行号 private int endRow; //总记录数 private long total; //总页数 private int pages; //结果集 private List<T> list;
//第一页 private int firstPage; //前一页 private int prePage; //下一页 private int nextPage; //最后一页 private int lastPage;
//是否为第一页 private boolean isFirstPage = false; //是否为最后一页 private boolean isLastPage = false; //是否有前一页 private boolean hasPreviousPage = false; //是否有下一页 private boolean hasNextPage = false; //导航页码数 private int navigatePages; //所有导航页号 private int[] navigatepageNums; |
4、集成AOP功能
<!-- 5、 AOP集成 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> |
5、建立AOP对象进行切面启动分页
@Aspect @Component public class PaginationFilter { @Pointcut("execution(* club.isource.platform.dao.mapper.*.select*(..))")// the pointcut expression private void pagination() {}// the pointcut signature @Before("pagination()") public void startPagination(){ // 1、获取分页请求参数 RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); if (attributes == null) { return; } HttpServletRequest request = ((ServletRequestAttributes) attributes).getRequest(); String page = request.getParameter("page"); String pageSize = request.getParameter("pageSize"); if (StringUtils.isEmpty(page)) { page = "1"; } if (StringUtils.isEmpty(pageSize)) { pageSize = "10"; } // 2、启动分页 PageHelper.startPage(Integer.valueOf(page), Integer.valueOf(pageSize)); } } |