spring框架使用ThreadLocal存储每个线程的request对象
不同请求会封装不同的request对象。
例如:查询的请求来到后端spring框架,spring会将当前线程请求放到ThreadLocal存储,
那么使用request对象就从ThreadLocal获取使用;如果是删除请求,请求来到后端spring框架就会将删除请求request对象存储到当前线程的ThreadLocal中。
PageHelper
pageHelper分页组件底层使用ThrealLocal存储当前页码和每页大小, 同一个线程内mapper执行分页的sql时执行limit关键字需要当前页码和每页小,就是从ThreadLocal里面获取的
PageHepler 其实limit的时候也是通过threadlocal去传递page跟pageSize的
我们用分页插件的时候 我们自己只写了一个sql语句就是根据条件查询所有的语句
但是实际上执行的是select count(0) limit ,?
为什么 就是因为pageHelper底层是通过threadLocal临时变量去做到的
那为什么我们要用page集合去接收数据 不用普通的list
是因为page集合的可以告诉我们每一页有多少数据 但是list不能