Spring AOP + PageHelper分页

  1. 增加依赖配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.6.11</version>
    </dependency>
        
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.6.11</version>
    </dependency>
    //增加pagehelper
        
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.1.0</version>
    </dependency>
    
  2. 增加配置

    1
    2
    3
    4
    5
    6
    7
    8
    <context:component-scan base-package="com.example.controller"/>
        
       <!-- 启动对@AspectJ注解的支持 -->
       <aop:aspectj-autoproxy/>
        
        
       <!--启动springmvc注解-->
       <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />
    
  3. 增加注解

    1
    2
    3
    4
    5
    6
    @Target({ElementType.PARAMETER, ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface EnablePaging {
        String value()  default "";
    }
    
  4. 增加AOP文件。 这里约定最后两个参数是pageNum 和pageSize

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  @Aspect
  @Component
  @Slf4j
  public class PageAop {
  
     @Pointcut("@annotation(com.example.annotation.EnablePaging)")
      public void serviceAspect(){
          log.info("serviceAspect");
      }
  
      @Before("serviceAspect()")
      public  void doBefore(JoinPoint joinPoint) {
          log.info("doBefore");
      }
  
   
  
  
      @Around(value = "serviceAspect()")
      public Object doAround(ProceedingJoinPoint point) throws  Throwable{
          log.info("doAround ");
          Object[] args = point.getArgs();
          Integer pageNum = 1;
          Integer pageSize = 10;
          if(args.length >= 2){
              pageNum = (Integer)args[args.length -2];
              pageSize = (Integer)args[args.length - 1];
          }
          PageHelper.startPage(pageNum, pageSize);
          return  point.proceed(args);
      }
  
   
  
  }
  1. Controller层

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @RequestMapping(value = "queryLogs")
      @EnablePaging
      @ResponseBody
      public  ServerResponse<PageInfo> queryLogs(HttpServletResponse response,
                                                        @RequestParam(value = "pageNum",defaultValue = "1") int pageNum,
                                                        @RequestParam(value = "pageSize",defaultValue = "10")int pageSize){
          List<Log> list =  iLogService.queryList(pageNum, pageSize);
          PageInfo pageInfo = new PageInfo(list);
          return ServerResponse.createBySuccess(pageInfo);
      }
    
坚持原创技术分享,您的支持将鼓励我继续创作!