Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

二级缓存问题 #11

Open
loutongtong opened this issue May 2, 2020 · 4 comments
Open

二级缓存问题 #11

loutongtong opened this issue May 2, 2020 · 4 comments

Comments

@loutongtong
Copy link

loutongtong commented May 2, 2020

org.apache.ibatis.builder.xml.XMLConfigBuilder#settingsElement 这个方法中有这么一行代码:
configuration.setCacheEnabled(booleanValueOf(props.getProperty("cacheEnabled"), true));
意思不就是默认开启二级缓存的吗?《Mybatis3源码深度解析》,7.4章节说默认关闭的,是不是有点问题?

(PS:QQ群找不到啊,企鹅群:1055227297,是这个吗?搜不到~~ 我QQ 1032817876 )
QQ截图20200502111838

@yulangde
Copy link

在书中 表4-1 MyBatis所有属性的含义 其中对于cacheEnable 作用的描述说:是否开启mapper缓存,即二级缓存,true标识默认开启。
在org.apache.ibatis.session.Configuration#cacheEnabled 默认值为true,是不是意味着mybatis二级缓存是默认开启的呢?
官网描述:
cacheEnabled | 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存
链接地址:https://mybatis.org/mybatis-3/zh/configuration.html#settings

@yulangde
Copy link

在Configuration类中,用到了这个CacheEnable只有在创建Executor中才用到。
if (cacheEnabled) {
executor = new CachingExecutor(executor);
}

@yulangde
Copy link

yulangde commented May 16, 2020

默认开启,也就是说 在MyBatis主配置文件中指定cacheEnabled属性值为true 这个是可以不需要配置的。
cache标签配置了,二级缓存才能生效,只有配置了这个才会真正的使用二级缓存。
在配置Mapper文件中,通过useCache属性指定Mapper执行时是否使用缓存,这个也是默认开启的。

@jiangrongbo
Copy link
Owner

jiangrongbo commented May 17, 2020

@loutongtong @yulangde 感谢提出疑问, 确实有点问题,cacheEnable是控制二级缓存的全局开关,默认是开启的。除此之外,二级缓存只有配置了cache标签才会开启,所以默认情况下不配置cache标签也是不开启的,表述上有点问题,我修改一下通知出版社

QQ群因为资料未完善,所以过了一段时间就搜不到了,现在已经可以了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants