在查询前调用startPage的时候,会往ThreadLocal里面注入分页信息,并且PageHelper类实现了mybatis的inteceptor的接口,执行sql拼接并完成调用的时候会从ThreadLocal中取出分页信息并拼接到sql后面,返回数据后通过实现mybatis拦截方法afterAll,对分页信息进行封装,封装成功后会调用clearPage清除本地变量,这样子下一个查询就不会分页了,如果下一个也需要分页则继续加startPage设置本地分页线程变量即可
总结:多个查询分页不会互相影响,因为每次调用完成后会清空;返回结果是page对象,不是接口里面定义的list,所以展开是看不到分页信息的,想要看需要先通过getDataTable转换成带有分页信息的对象(PageInfo pageInfo = new PageInfo(list);),打断点的时候可以通过view as object来查看对象信息,如果是view as list则看不到分页信息