mybatis缓存

Posted THISISPAN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis缓存相关的知识,希望对你有一定的参考价值。

mybatis的延迟加载和缓存技术开始 
mybatis一级缓存 
技术分享 
mybatis的二级缓存

mybatis默认是没有开启二级缓存的。 
开启二级缓存需要在mybatis的全局配置文件sqlMapConfig.xml中加入 

除了开启二级缓存开关外,还需要在各自的mapper.xml中开启二级缓存。 
技术分享

原理图: 
技术分享 
如上图:sqlsession1去查询id为1的用户信息,查询到用户信息就会查询数据存放在二级缓存区域(hashmap)中
sqlsession2去查询id为1的用户信息,首先去缓存中查找是否存在数据,如果存在就直接从二级缓存中取出数据。 
二级缓存和一级缓存的区别:二级缓存的范围更大,多个sqlsession 
可以共享usermapper的二级缓存。 
二级缓存是根据mapper的namespace来划分的,相同namaspace下的mapper共享二级缓存,反之 
如果sqlsession3去执行相同mapper下sql,并执行commit()操作,则清空该命名空间下的二级缓存

二级缓存的测试代码:

技术分享

上面涂黄部分要特别注意,sqlsession关闭时才可以把数据写到二级缓存区域中,如果本namespace下的sqlsession执行了commit()操作,二级缓存就会清空

 

禁用二级缓存 
也可以禁用单个查询的二级缓存,这样要保证每次查询的都是最新数据。 
技术分享

刷新二级缓存(就是清空缓存,切记) 
技术分享 
总结:一般情况下,执行commit()操作之后,都要刷新缓存,因此flushCache都设为true,来避免数据的脏读。

mybatis cache的参数设置 
flushInterval(刷新间隔),可以为任意整数,单位为毫秒值,这个比较有用。

以上是关于mybatis缓存的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis源码分析五MyBatis的缓存

转MyBatis学习总结——Mybatis缓存

mybatis二级缓存默认开启吗?

MyBatis基础:MyBatis缓存

SSM框架MyBatis笔记 --- 表之间的关联关系;MyBatis事务;MyBatis缓存机制;ORM概述

MyBatis——Mybatis缓存