总结:

​PageHelper​​​首先将前端传递的参数保存到​​page​​​这个对象中,接着将​​page​​​的副本存放入​​ThreadLoacl​​​中,这样可以保证分页的时候,参数互不影响,接着利用了mybatis提供的拦截器(​​PageHelper​​​的拦截器​​PageInterceptor​​​实现了和mybatis拦截器一样的​​interceptor​​​接口,调用其中的​​intercept​​​方法),取得​​ThreadLocal​​​中​​page​​对象的值,通过反射机制将page分页信息拼接分页逻辑给mybatis要执行的SQL语句,完成分页。