分页插件pagehelper杂谈

今天突然想研究公司的架构代码,发现了分页插件和以前使用的不一样,采用的是PageHelper的PageHelper.startPage 静态方法调用。

由于以前没有接触过这个分页插件,我一直再想分页插件是如何实现第一个查询sql分页,而后面的不分页,通过查看官方文档在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页才了解到。

仔细阅读了官方文档,发现这个分页插件对比以前我接触的各种插件来说,使用简单、代码逻辑量少、配置简单,因为项目采用了spring boot,前端访问的API都在一个包管理,所以我们对接口的名称也定义了一套规范,直接使用AOP拦截需要分页的接口,代码量可以说大大减少,对开发来说方便了很多。

贴上接口名称代码

// 参数为伪代码
public RespEntity findXXXPage(@RequestBody Object object) {
}

贴上AOP代码

@Around("execution(* com.vteam.sme.api.controller..find*Page(..))")
    public Object pageHandler(ProceedingJoinPoint joinPoint) throws Throwable {
        Object[] args = joinPoint.getArgs();
        // 伪代码
        Object params = args[0];
        Assert.notNull(params.getPageNum(), "页码不能为空。");
        Assert.notNull(params.getPageSize(), "每页大小不能为空。");
        // 开启分页
        Page<Object> page = PageHelper.startPage(params.getPageNum(), params.getPageSize());
        // 处理业务逻辑
        Object object = joinPoint.proceed(args);
        // 设置总记录数
        BeanWrapper beanWrapper = new BeanWrapperImpl(object);
        beanWrapper.setPropertyValue("count", page.getTotal());
        return object;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值