package com.rzyc.advice; import com.github.pagehelper.PageHelper; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; import java.lang.reflect.Field; /** * @Author jilin * @Date 2021/11/09 11:57 * 分页aop * 注解写在mapper上,aop代理方式需为jdk代理,cglib代理无法aop mapper **/ @Aspect @Component public class PageAspect { @Pointcut("@annotation(com.rzyc.advice.PageOperation)execution(* com.rzyc..*.*(..))") public void page() {} @Before("page()") public void pageOperation(JoinPoint joinPoint) throws IllegalAccessException, NoSuchFieldException { Object[] args = joinPoint.getArgs(); Class clazz = args[0].getClass(); Field page = clazz.getDeclaredField("page"); page.setAccessible(true); Field pageSize = clazz.getDeclaredField("pageSize"); pageSize.setAccessible(true); PageHelper.startPage((Integer) page.get(args[0]),(Integer) pageSize.get(args[0])); } }