文章目录
前言
最近有朋友再问我SpringBoot怎么分页,在网上看了不同的答案,我也把我的实现思路来整理一下。
一、添加依赖
<!--分页工具-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.1.14.RELEASE</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
创建好项目后在pom.xml文件中引入上面的依赖依赖
二、创建两个工具类
2.1、新建一个基于面向切面的类
代码如下(示例):
package com.wolf.ssm.util;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* aop环绕通知,在*service.list*()方法前后执行,与mybatis的PageHelper插件一起完成PageBean的初始化
*
* @author Administrator
*/
@Component
@Aspect
public class PageBeanAspect {
@Around(value = "execution(* *..*Service.list*(..))")
public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable {
// 取出PageBean
Object[] args = joinPoint.getArgs();
PageBean pageBean = null;
for (Object obj : args) {
if (obj instanceof PageBean) {
pageBean = (PageBean) obj;
break;
}
}
// 如果分页,指定分页参数
if (null != pageBean && pageBean.isPagination()) {
PageHelper.startPage(pageBean.getPage(), pageBean.getRows());
}
Object returnValue = joinPoint.proceed(args);
// 如果分页,获得总记录数
if (null != pageBean && pageBean.isPagination() && null != returnValue &&
returnValue instanceof List) {
List list = (List) returnValue;
PageInfo pageInfo = new PageInfo(list)