mybatis中的缓存机制

 更新时间:2023年06月05日 08:43:43   作者:灵泽~  
这篇文章主要介绍了mybatis中的缓存机制用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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>    

效果以及其代码:

MyBatis缓存机制是什么?

mybatis一级缓存是 SqlSession 级别的缓存,默认支持一级缓存,不需要在配置文件去配置。

mybaits的二级缓存是 mapper 范围级别,除了在 SqlMapConfig.xml 设置二级缓存的总开关<settingname=‘cacheEnabled’ value=‘true’/>

还要在具体的 mapper.xml 中开启二级缓存:<mappernamespace=‘cn.hpu.mybatis.mapper.UserMapper’>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot Security 结合 JWT 实现无状态的分布式API接口

    Spring Boot Security 结合 JWT 实现无状态的分布式API接口

    JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。这篇文章主要介绍了Spring Boot Security 结合 JWT 实现无状态的分布式API接口 ,需要的朋友可以参考下
    2019-04-04
  • java中的常用集合类整理

    java中的常用集合类整理

    在本篇文章里小编给大家整理的是关于java中的常用集合类的相关知识点内容,有兴趣的朋友们学习下。
    2019-12-12
  • Java对List进行排序的两种实现方法

    Java对List进行排序的两种实现方法

    这篇文章主要给大家介绍了关于Java对List进行排序的两种实现方法,第一种是实体类自己实现比较,第二种是借助比较器进行排序,下面开一起看看详细的介绍吧,有需要的朋友们可以参考借鉴。
    2016-12-12
  • JAVA调用JavaScript方法举例详解

    JAVA调用JavaScript方法举例详解

    之前在一次机缘巧合的情况下,需要时用JAVA执行js方法,查阅了一些文档,找到了相关解决方法,这里和大家分享一下,下面这篇文章主要给大家介绍了关于JAVA调用JavaScript方法的相关资料,需要的朋友可以参考下
    2023-10-10
  • Maven排除依赖和可选依赖的使用方法

    Maven排除依赖和可选依赖的使用方法

    我们知道Maven依赖具有传递性,例如A依赖于B,B依赖于C,在不考虑依赖范围等因素的情况下,Maven会根据依赖传递机制,将间接依赖C 引入到A中,但如果A出于某种原因,希望将间接依赖C排除,那该怎么办呢,Maven为用户提供了两种解决方式排出和可选
    2023-06-06
  • Java中线程安全问题

    Java中线程安全问题

    这篇文章主要介绍了Java中线程安全问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • JAVA设计模式之建造者模式原理与用法详解

    JAVA设计模式之建造者模式原理与用法详解

    这篇文章主要介绍了JAVA设计模式之建造者模式,简单说明了建造者模式的原理、组成,并结合实例形式分析了java建造者模式的定义与用法,需要的朋友可以参考下
    2017-08-08
  • 解决java try throw exception finally遇上return break continue造成异常丢失

    解决java try throw exception finally遇上return break conti

    这篇文章主要介绍了解决java try throw exception finally遇上return break continue造成异常丢失问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java多线程的其他知识_动力节点Java学院整理

    Java多线程的其他知识_动力节点Java学院整理

    这篇文章主要介绍了Java多线程的其他知识,需要的朋友可以参考下
    2017-05-05
  • Mybatis-Plus默认主键策略导致自动生成19位长度主键id的坑

    Mybatis-Plus默认主键策略导致自动生成19位长度主键id的坑

    这篇文章主要介绍了Mybatis-Plus默认主键策略导致自动生成19位长度主键id的坑,本文一步步给大家分享解决方法,给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12

最新评论