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