二.aop整合pageHelper分页插件
1.创建Aop切面类及包
package com.YU.aspect; import com.YU.utils.PageBean; 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; /** * @author YU * @create 2023-08-25 17:17 */ @Aspect //代表当前类为切面类 @Component //代表当前类交给Spring进行管理 public class PagerAspect { @Around("execution(* *..*Biz.*Pager(..))") public Object invoke(ProceedingJoinPoint args) throws Throwable { PageBean pageBean = null; //获取目标方法的所有参数 Object[] ars = args.getArgs(); for (Object param : ars) { if(param instanceof PageBean){ pageBean = (PageBean)param; break; } } if(pageBean != null && pageBean.isPagination()) PageHelper.startPage(pageBean.getPage(),pageBean.getRows()); Object list = args.proceed(); if(null != pageBean && pageBean.isPagination()){ PageInfo pageInfo = new PageInfo((List) list); pageBean.setTotal(pageInfo.getTotal()+""); } return list; } }
2.解析@Around环绕通知中的execution(* *..*Service.*Pager(..))
* :返回任意类型
*.. : 任意包,任意层级
*Service :以Service结尾的类/接口
*Page:以Page结尾的方法
.. :任意参数
符合上述条件即为目标类或目标方法
3.测试方法
@Test public void listPager() { Book book = new Book(); PageBean pageBean = new PageBean(); pageBean.setPage(2); pageBean.setRows(30); book.setBname("圣墟"); this.bookbiz.listPager(book,pageBean).forEach(System.out::println); }
测试结果
今日笔记分享到这里就结束了,感谢各位能看到这里,喜欢博主的可以关注哦
感谢各位老铁的三连,谢谢谢谢谢了