pagehelper 分页插件原理
PageHelper是MyBatis的一个插件,内部实现了一个PageInterceptor。Mybatis会加载这个到链中。在我们使用过程中先使用PageHelper.startPage这样的语句在当前线程上下文中设置一个ThreadLocal变量,再利用PageInterceptor这个分页拦截,从ThreadLocal中拿到分页的信息,如果有分页信息拼装分页SQL(limit语句等)进行分页查询,最后再把ThreadLocal中的东西清除掉。
PageHelper首先将前端传递的参数保存到page这个对象中,接着将page的副本存放入ThreadLoacl中,这样可以保证分页的时候,参数互不影响,接着利用了mybatis提供的(PageHelper的PageInterceptor实现了和mybatis一样的interceptor接口,调用其中的intercept方法),取得ThreadLocal中page对象的值,通过反射机制将page分页信息拼接分页逻辑给mybatis要执行的SQL语句,完成分页。分页查询插件
以上信息仅供参考,建议咨询专业人士获取更准确的信息。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论