千家信息网

什么是Mybaits缓存机制

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,本篇内容介绍了"什么是Mybaits缓存机制"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.一级缓
千家信息网最后更新 2025年01月17日什么是Mybaits缓存机制

本篇内容介绍了"什么是Mybaits缓存机制"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.一级缓存

本地缓存

与数据库同一次会话期间查询到的数据会放在本地缓存中

以后如果需要获取相同的数据,直接从缓存中拿

一级缓存是自动开启的。下面的4种方法是使得一级缓存失效的

1.sqlSession不同

2.sqlSession相同,查询条件不同

3.sqlSession相同,查询期间执行了增删操作

4.手动清除了一级缓存

1.1 一级缓存初体验

@Test

public void test1()throws Exception{

SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();

SqlSession openSession = sqlSessionFactory.openSession();

EmployMapper mapper = openSession.getMapper(EmployMapper.class);

Employee id = mapper.getId(2);

System.out.println(id);

Employee id1 = mapper.getId(2);

System.out.println(id1);

openSession.close();

}

由于有一级缓存的缘故,所以不用再调用sqlSession

1.2 一级缓存失效

  1. sqlSession不同

@Test

public void test1()throws Exception{

SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();

SqlSession openSession = sqlSessionFactory.openSession();

EmployMapper mapper = openSession.getMapper(EmployMapper.class);

Employee id = mapper.getId(2);

System.out.println(id);

SqlSession openSession1 = sqlSessionFactory.openSession();

EmployMapper mapper1 = openSession1.getMapper(EmployMapper.class);

Employee id1 = mapper1.getId(2);

System.out.println(id1);

openSession.close();

}

由于SqlSession的不同

使得没有缓存

2.sqlSession相同,查询条件不同

3.sqlSession相同,查询期间执行了增删操作

4.手动清除了一级缓存

执行了openSession.clearCache()方法

2.二级缓存

全局缓存

是基于namespace级别的缓存,一个namespace对一个二级缓存

1.查询一条数据,放在一级缓存

2.如果会话关闭,一级到二级,新的会话信息,会参照二级缓存

3.不同的namespace会放在不同的map中,不同的二级缓存中

2.1 开启二级缓存

开启二级缓存

test.java

@Test

public void test2()throws Exception{

SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();

SqlSession openSession = sqlSessionFactory.openSession();

SqlSession openSession1 = sqlSessionFactory.openSession();

EmployMapper mapper = openSession.getMapper(EmployMapper.class);

EmployMapper mapper1 = openSession1.getMapper(EmployMapper.class);

Employee id = mapper.getId(3);

System.out.println(id);

openSession.close();

Employee id1 = mapper1.getId(3);

System.out.println(id1);

openSession1.close();

}

注意要关闭再获取第二个,不然不会开启二级缓存,因为只有会话关闭的时候一级缓存才会转为二级缓存

2.2 二级缓存的属性

cacheEnabled="true"

开启二级缓存

cacheEnabled="false"

关闭二级缓存,但是一级缓存没有关闭

useCache="false"

则二级缓存不可以使用,但是一级缓存还可以使用

flushCache="true"的话一级和二级缓存都会清除

默认为false

3.缓存原理图

缓存查询顺序:

二级缓存

一级缓存

数据库

"什么是Mybaits缓存机制"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

缓存 不同 查询 相同 数据 机制 内容 手动 数据库 方法 更多 条件 知识 实用 学有所成 接下来 不用 信息 全局 原理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库的数据文件的关键字 政府机关内部网络安全工作计划 给戴尔服务器配置管理ip 将数据库数据转换为数组 sql数据库编程教程 网络安全人才需求规模指数 智能模组有什么服务器 问道手游ios和安卓服务器 计算存储网络安全资源 数据库HeidiSQL建表 连接数据库怎么导入驱动包 网络安全相关例子 lol手游找不到服务器了 服务器 境内 奉贤区水性网络技术哪家好 上海睿民互联网科技有限公司李炜 网络安全的认识100字 华为信息与网络技术学院专业 杭州交友软件开发公司有哪些 海康存储服务器装系统 数据库怎样取消升序 企业网络安全和信息化委员会 数据库预约无效 杭州亿牛网络技术有限公司 电脑远端服务器无响应咋回事 非常网络安全专业 sqoop 删除数据库 网络安全阀有几章几条 石家庄佳诚网络技术有限公司假期 中学生网络安全法学后心得
0