https://mp.weixin.qq.com/s?src=11×tamp=1602390036&ver=2637&signature=AXwcTb0jvYMKP4w3qN00o992Ki64L0vssnCde3ygoQDpMgA6HkDxH1BIxkvHugjPks-XjaKiOihuUFr7mM-ZhxYnQ5cVIXbPeViZShjko20Q2vlQyE5N6gBCuHiqbR&new=1
mybatis的的一级缓存是SqlSession级别的缓存,一级缓存缓存的是对象,当SqlSession提交、关闭以及其他的更新数据库的操作发生后,一级缓存就会清空。二级缓存是SqlSessionFactory级别的缓存,同一个SqlSessionFactory产生的SqlSession都共享一个二级缓存,二级缓存中存储的是数据,当命中二级缓存时,通过存储的数据构造对象返回。查询数据的时候,查询的流程是二级缓存>一级缓存>数据库
不能滥用二级缓存,二级缓存也有很多弊端,从MyBatis默认二级缓存是关闭的就可以看出来。
二级缓存是建立在同一个namespace下的,如果对表的操作查询可能有多个namespace,那么得到的数据就是错误的。