pagehelper了, 猜测可能是pagehelper 为了分页再发了一条算总数count的sql, 而打印sql的拦截器没有获取到count查询的完整sql, 所以看上去发了两遍一样的sql
网上找了下拦截器的资料...;
/**
* 在分页拦截器后加载
*/
@Autowired
PageHelperAutoConfiguration pageHelperAutoConfiguration...配置完成, 再次执行查询, sql只打印一次, 说明sql打印拦截器在分页拦截器之前被调用, 完成
但是为什么先加载的拦截器反而后执行, 网上好像没啥资料, 那就只能自己翻翻源码了.
debug看了下,...InterceptorChain内用ArrayList存储起来
核心是这个InterceptorChain#pluginAll这个方法
解析下
在pluginAll方法中, 遍历interceptors...即, 在这一步, 先加载的拦截器会优先被遍历, 会优先对目标对象进行代理,
后加载的拦截器, 在原有的代理之上再进行代理, 一层包一层, 类似洋葱.
当方法被调用时, 会先执行最外层的代理方法.