MyBatis提供一级缓存和二级缓存
一级缓存是基于PerpetualCache(MyBatis)自带的HashMap本地缓存,作用范围问session域内,当session flush或者close之后,该session中所有的cache就会被清空。也就是说我们查询所使用的XML标签中的SQl语句就是用一级缓存保存的,当我们关闭执行该语句的SqlSession对象时,缓存清空,即语句清空。
二级缓存就是global caching,超出session范围之外,且被所有SqlSession共享,开启需要在核心配置文件中设置
同时在Maper文件中也要开启缓存,默认是不开启缓存,二级缓存的作用域是针对mapper的namespace而言的,所以只有处在相同空间下的查询才能共享
当然,还可以单独设置cache(如果你需要对个别查询进行调整)只需在<select>
标签中设置useCache的属性值为true即可,值得注意的是当面对一定规模的数据量时,内置的Cache方式就派不上用场,MyBatis应当专心于SQL映射,因此对于查询结果集的缓存可以使用专门的服务器OSCache、Memcached等缓存服务器。