说明
mybatis的二级缓存,我们通常说,默认是关闭的,这个结论是没有问题的,但是我觉得有几个点需要说明白
二级缓存的时候,需要有几个配置必须开启,二级缓存才会生效
1.全局配置文件中的cacheEnable属性设置为true
2.mapper.xml文件中,配置节点
3.mapper.xml文件中,select语句的useCache配置为true
这三者同时满足,才会使用二级缓存
上面这三个配置,在源码中,解析了之后,分别对应这三个类中的属性
我们知道,mybatis中的配置文件,在解析了之后,最终会把所有解析的结果,映射到一个类中org.apache.ibatis.session.Configuration
1.对应着 configuration.cacheEnabled属性
2.对应着 Configuration --> mappedStatements --> cache
3.对应着 Configuration --> mappedStatements --> useCache
我们常说二级缓存默认是关闭的,并不是说这三个配置默认都没有配置,翻了源码之后,默认不做任何配置的情况下:
1.全局配置文件中的CacheEnable属性,默认是true
2.mapper.xml文件中的节点如果没有配置, 那MappedStatement对象中的cache属性为null
3.如果select语句的useCache没有配置,select语句默认是true,其他是false
所以,虽然这种也是默认关闭的,但是我觉得需要说明白,并不是二级缓存用到的这几个