iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Mybatis的一级缓存和二级缓存原理分析与使用
  • 464
分享到

Mybatis的一级缓存和二级缓存原理分析与使用

2024-04-02 19:04:59 464人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录mybatis的一级缓存和二级缓存1 Mybatis如何判断两次查询是完全相同的查询2 二级缓存2.1 二级缓存配置2.2 二级缓存特点2.3 配置二级缓存2.4 测试Mybat

Mybatis的一级缓存和二级缓存

Mybatis会将相同查询条件的sql语句的查询结果存储在内存或者某种缓存介质中,当下次遇到相同的SQL时不执行该SQL,而是直接从缓存中获取结果,减少服务器的压力,尤其是在查询越多、缓存命中率越高的情况下,使用缓存对性能的提高更明显。

Mybatis缓存分为一级缓存和二级缓存,一级缓存是将结果缓存在SqlSession对象中,二级缓存是存储在SqlSessionFactory对象中。默认情况下,Mybatis开启一级缓存,不开启二级缓存当数据量更大时,可以借助第三方缓存技术协助保存Mybatis的二级缓存数据

请添加图片描述

如果SqlSession调用了close()方法,会释放掉一级缓存PerpetualCache对象,一级缓存将不可用如果SqlSession调用了clearCache(),会清空PerpetualCache对象中的数据,但是该对象仍可使用 SqlSession中执行了任何一个update操作(update()、delete()、insert()),都会清空PerpetualCache对象的数据,但是该对象可以继续使用

1 Mybatis如何判断两次查询是完全相同的查询

如果以下条件完全一样,Mybatis则认为是相同的查询

-- 传入的statementid。
-- 查询时要求的结果集中的结果范围
-- 这次查询所产生的最终要传递给Preparedstatement的Sql语句字符串
-- 传递的参数值


@Test
    public void testCacheOne(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        Users users = userDao.selectUsersById(1);
        Users users1 = userDao.selectUsersById(1);
        System.out.println(users);
        System.out.println(users1);
    }

请添加图片描述

查询两次,数据库查询了一次


    @Test
    public void testCacheOne(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        Users users = userDao.selectUsersById(1);
        //清空缓存
        sqlSession.clearCache();
        Users users1 = userDao.selectUsersById(1);
        System.out.println(users);
        System.out.println(users1);
    }

请添加图片描述

清空缓存,数据库查询了两次

2 二级缓存

​ Mybatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,二级缓存SqlSessionFactory上缓存,可以是由一个SqlSessionFactory创建的不同的SqlSession之间共享缓存数据。默认不开启。SqlSession在执行commit()或者close()的时候将数据放入到二级缓存

请添加图片描述

请添加图片描述

2.1 二级缓存配置

Mybatis实现二级缓存的实体类必须是可序列化的,也就是要求实现Serializable接口。在映射配置文件中配置就可以开启缓存了

2.2 二级缓存特点

映射语句文件中的所有select查询语句都会被缓存
insert、update、delete语句会刷新缓存
二级缓存是以namespace为单位,不同namespace下的操作互不影响
如果在加入<cache/>标签的前提下让个别select元素不适用缓存,可以使用useCache属性,设置为false

2.3 配置二级缓存

在mybatis-config.xml文件中标签配置开启二级缓存。cacheEnabled的值就是true,可省略


<settings>
    <setting name="cacheEnable" value="true"/>
</settings>

在映射文件中添加


<mapper namespace="com.zd.dao.UserDao">
    <cache/>
</mapper>

2.4 测试

请添加图片描述


    @Test
    public void testCacheTwo(){
        SqlSession sqlSession=MybatisUtil.getSqlSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        Users users = userDao.selectUsersById(1);
        System.out.println(users);
        //关闭SqlSession后,重新获取SqlSession对象查询
        MybatisUtil.closeSqlSession();
        SqlSession sqlSession2=MybatisUtil.getSqlSession();
        UserDao userDao2 = sqlSession2.getMapper(UserDao.class);
        Users users2 = userDao2.selectUsersById(1);
        System.out.println(users2);
    }

请添加图片描述

查询了一次,可以看出不同的SqlSession之间共享缓存数据。

到此这篇关于Mybatis的一级缓存和二级缓存原理分析与使用的文章就介绍到这了,更多相关Mybatis 缓存内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Mybatis的一级缓存和二级缓存原理分析与使用

本文链接: https://www.lsjlt.com/news/158479.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis的一级缓存和二级缓存原理分析与使用
    目录Mybatis的一级缓存和二级缓存1 Mybatis如何判断两次查询是完全相同的查询2 二级缓存2.1 二级缓存配置2.2 二级缓存特点2.3 配置二级缓存2.4 测试Mybat...
    99+
    2022-11-12
  • MyBatis一级缓存与二级缓存原理与作用分析
    目录缓存的作用MyBatis 的缓存结构一级缓存二级缓存缓存的作用 在 Web 系统中,最重要的操作就是查询数据库中的数据。但是有些时候查询数据的频率非常高,这是很耗费数据库资源的,...
    99+
    2022-12-27
    Mybatis 一级缓存 Mybatis 二级缓存 MyBatis一级缓存和二级缓存
  • Mybatis 一级缓存和二级缓存原理区别
    目录Mybatis缓存Mybatis一级缓存1.为什么需要Mybatis一级缓存2.Mybatis一级缓存的实现3.Mybatis一级缓存配置Mybatis二级缓存1.为什么需要My...
    99+
    2022-11-13
  • MyBatis一级缓存与二级缓存原理与作用是什么
    这篇“MyBatis一级缓存与二级缓存原理与作用是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MyBatis一级缓存与...
    99+
    2023-07-04
  • Mybatis中一级缓存、二级缓存的示例分析
    这篇文章主要介绍了Mybatis中一级缓存、二级缓存的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Mybatis 为我们提供了一级缓存和二级缓存,可以通过下图来理解...
    99+
    2023-06-02
  • Mybatis 一级缓存与二级缓存的实现
    mybatis缓存 mybatis作为一个流行的持久化工具,缓存必然是缺少不了的组件。通过这篇文章,就让我们来了解一下mybatis的缓存。 mybatis缓存类型 说起mybati...
    99+
    2022-11-12
  • 深入浅析MyBatis中的一级缓存与二级缓存
    本篇文章给大家分享的是有关深入浅析MyBatis中的一级缓存与二级缓存,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MyBatis缓存我们知道,频繁的数据库操作是非常耗费性能的...
    99+
    2023-05-31
    mybatis 二级缓存 一级缓存
  • MyBatis中一级缓存与二级缓存的区别
    今天就跟大家聊聊有关MyBatis中一级缓存与二级缓存的区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一级缓存一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sq...
    99+
    2023-05-31
    mybatis 一级缓存 二级缓存
  • 使用MyBatis如何实现一级缓存与二级缓存
    这期内容当中小编将会给大家带来有关使用MyBatis如何实现一级缓存与二级缓存,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。MyBatis缓存我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB...
    99+
    2023-05-31
    mybatis 一级缓存 二级缓存
  • Mybatis详细对比一级缓存与二级缓存
    目录基本要点1、缓存2、一级缓存(默认开启,无法关闭)3、二级缓存4、缓存查询原理基本要点 1、缓存 什么是缓存? 存在内存中的临时数据,我们可以把用户经常查询的数据存放到缓存中,当...
    99+
    2022-11-13
  • 一文搞懂MyBatis一级缓存和二级缓存
    目录前言一. 一级缓存机制展示二. 一级缓存源码分析三. 二级缓存机制展示1. 场景一2. 场景二3. 场景三4. 场景四5. 场景五四. 二级缓存的创建五. 二级缓存的源码分析总结...
    99+
    2023-05-19
    MyBatis一级缓存和二级缓存
  • mybatis一级缓存和二级缓存是什么
    mybatis一级缓存和二级缓存是mybatis提供的两种不同层次的缓存机制,一级缓存是mybatis中默认开启的缓存机制,它是基于线程的本地缓存,二级缓存是基于namespace级别的缓存,可以被多个SqlSession对象共享。本教程操...
    99+
    2023-08-09
  • Java Mybatis一级缓存和二级缓存是什么
    本篇内容主要讲解“Java Mybatis一级缓存和二级缓存是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java Mybatis一级缓存和二级缓存是什么”吧!一、什么...
    99+
    2023-07-05
  • mybatis一级缓存和二级缓存有什么区别
    MyBatis的一级缓存和二级缓存是两种不同级别的缓存机制。一级缓存是在同一个SqlSession内部的缓存,它默认是开启的。在执行...
    99+
    2023-08-20
    mybatis
  • MyBatis一级与二级缓存相关配置
    目录1.MyBatis的一级缓存2.MyBatis的二级缓存3.二级缓存的相关配置4.MyBatis缓存查询的顺序1.MyBatis的一级缓存 一级缓存是 SqlSession 级别...
    99+
    2023-01-03
    MyBatis缓存 MyBatis一级缓存 MyBatis二级缓存
  • 关于mybatis的一级缓存和二级缓存的那些事儿
    目录一、缓存是什么二、为什么需要缓存三、哪些数据会放到缓存四、mybatis一级缓存五、二级缓存六、注意事项一、缓存是什么 缓存其实就是存储在内存中的临时数据,这里的数据量会比较小,...
    99+
    2022-11-12
  • mybatis二级缓存的原理是什么
    MyBatis的二级缓存是指缓存在SqlSessionFactory级别的缓存,可以被多个SqlSession共享。其原理如下:1....
    99+
    2023-10-09
    mybatis
  • Spring中一级缓存、二级缓存和三级缓存有什么作用
    今天小编给大家分享一下Spring中一级缓存、二级缓存和三级缓存有什么作用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。缓存...
    99+
    2023-06-29
  • 关于Spring中一级缓存、二级缓存和三级缓存的那些事
    目录题记缓存作用分析一级缓存、二级缓存、三级缓存区别是什么总结题记 常常听到别人提起:“一级缓存、二级缓存、三级缓存”。那么它们是什么呢?有什么作用呢? 缓存...
    99+
    2022-11-13
  • Java之Mybatis的二级缓存怎么使用
    本文小编为大家详细介绍“Java之Mybatis的二级缓存怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java之Mybatis的二级缓存怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。缓存的概述...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作