Mybatis-plus分页查询底层原理

Mybatis-plus分页查询底层原理

​ PageHelper内部原理是将传⼊的页码和每页条数赋值给了Page对象,保存到了⼀个本地线程ThreadLoacl中,然后会进⼊Mybatis的拦截器中。然后在拦截器中获取本地线程中保存的分页的参数。最后再将这些分页参数和原本的sql以及内部定义好的sql进⾏拼接完成sql的分页处理。中间会进⾏判断该sql 的类型是查询还是修改操作。如果是查询才会进⼊分页的逻辑并判断封装好的Page对象是否是null,null则不分页,否则分页。

​ IPage内部原理也是基于拦截器,但是这个拦截的是⽅法以及⽅法中的参数,这个也会判断是否是查询操作。如果是查询操作,才会进⼊分页的处理逻辑。进⼊分页逻辑处理后,拦截器会通过反射获取该⽅法的参数进⾏判断是否存在IPage对象的实现类。如果不存在则不进⾏分页,存在则将该参数赋值给IPage对象。然后进⾏拼接sql的处理完成分页操作。

核心源码

  @SuppressWarnings("unchecked")
    @Override
    public Object intercept

你可能感兴趣的:(企业级框架,项目开发日常,Java全栈笔记整理,java,开发语言,后端)