mybatis的缓存机制

一、mybatis和同是持久层的hibernate一样,都存在着缓存机制,今天来说一下mybatis的缓存机制。

查询缓存来缓存数据,从而达到提高查询性能的要求,以提高我们项目的效率!!

二、mybatis的缓存机制有两级:

             (1)一级缓存:一级缓存mybatsi已近为我们自动开启,不用我们手动操作,而且我们是关闭不了的!!但是我们可以手动清除缓存。(SqlSession级别)

             (2)二级缓存:二级缓存需要我们手动开启。(全局级别)

三、一级缓存

缓存存在的条件
存在要求同一个SqlSession中,在没有收到改变该数据的请求之前!

代码以及效果:

 

 

缓存失效的条件
         一并不是同一个Sqlsession对象
         二在查询的过程中,两次的查询条件不同(其实这个不用我说大家也知道)
         三在两次之间进行了增,删,改,操作
        四在两次之间自己进行了手动清空缓存

缓存失效的效果如下:

 

四:二级缓存

       二级缓存的作用:通过度一级缓存的了解。推挤缓存是基于同一个SqlSesion类的实例对象的。但是,有些时候在wenb工厂中将会执行查询操作的方法分装在某个Service方法中,当查询完一次后,Service方法结束,此时SqlSession类的实例对象就会关闭,一级缓存就会被清空。此时若再次调用用Service方法查询同一个信息,此时异界缓存就是空的,从而无法从缓存中获取信息!!

       因此,我们可以使用二级缓存,二级缓存存在与Mapper实例中,当多个SqlSession类的实例对象加载相同的mapper文件,并执行其中国的SQL配置时,他们就共享一个Mapper缓存。当某个SqlSession类的实例对象执行了增,删,改,等改变数据的操作时,Mapper实例都会清空其二级缓存!

         开启二级缓存:

开启二级缓存需要两个步骤,第一步在mybatis的全局配置文件中配置Setting属性,设置名为cacheEnabled的属性值为true即可

<settings>
		<!-- 
			(1):开启二级缓存,这个全局的配置二级缓存
			       默认是开启的,但是还是需要写上,防止版本的更新 
		-->
		<setting name="cacheEnabled" value="true"/>
</settings>	

第二步:在具体需要二级缓存的mapeer映射文件中开启二级缓存,值需要在相应的映射文件中添加一个cache标签即可

(2):在相应的映射文件中开启二级缓存
<!-- 开启二级缓存 -->
 	<cache></cache>	

效果以及其代码:

  • 14
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值