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缓存的主要内容,如果未能解决你的问题,请参考以下文章