mybatis一级缓存默认开启,二级缓存需手动开启,开启二级缓存需要在配置文件或者单个mapper xml 里配置
一级缓存维度是sql session ,可以认为一个请求所涉及的增删改查在一个sql session里,
如果请求里都是查询,且有相同的查询,那后面的查询就会走缓存;
如果请求里有增删改,那增删改之前的缓存会被清掉,后面的查询会走库。
二级缓存是全局维度的,查询时,会优先取二级缓存,然后取一级缓存,都没有时读库
sql session提交/关闭时,会将一级缓存刷到二级缓存
缓存是用来提高响应速度的,每次都去库查,肯定比从缓存查慢,因为程序运行在内存里,把数据缓存在内存一份,而持久化的数据在磁盘上,磁盘IO很耗时