继续用提问的方式来看Mybatis的缓存设计。
1、Mybatis如何开启缓存
Mybatis对查询结果进行缓存,所以缓存的对象为具体的Statement
通过在Statement上是否使用缓存来启用。
2、谁持有缓存?
Mybatis中有两个对象持有缓存。
CachingExecutor以及BaseExecutor
CachingExecutor和SimpleExecutor的关系是持有的关系
CachingExecutor <span style="color: #0000ff">private <span style="color: #0000ff">final<span style="color: #000000"> Executor delegate;
<span style="color: #0000ff">private <span style="color: #0000ff">final TransactionalCacheManager tcm = <span style="color: #0000ff">new TransactionalCacheManager();
<span style="color: #0000ff">private <span style="color: #0000ff">final TransactionalCacheManager tcm = <span style="color: #0000ff">new TransactionalCacheManager();
3、缓存何时开启?
当开启Mapper级别的缓存时,
缓存
失效
两次查询,只访问了数据库1次.第二次不再请求数据库
配置缓存参数
结果出乎意料,缓存竟然没有命中。分析下原因:
即使打开了
6、Mybatis设计的目的
简单,不配置也可以使用。用与在一个sqlSession中多次使用相同条件多次查询。
7、Mybatis设计的目的
增强版,也支持事物级别的缓存,同时支持不同sqlSession之间的共享。扩大可缓存的可用性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。