千家信息网

什么是Mybaits缓存机制

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"什么是Mybaits缓存机制"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.一级缓
千家信息网最后更新 2026年11月01日什么是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安全错误 数据库的锁怎样保障安全 互联网科技股 上海卓越科技互联网 华服互联网科技怎么样 互联网科技公司经营范围 山东特亿宝互联网科技有限公司 江苏根荣互联网科技 新华互联网科技学校 新华互联网科技学院 互联网科技类展会 济南华为互联网科技产业总部基地 贵州叶脉互联网科技有限公司所属行业 栖莱科技互联网股份有限公司 湖北码尼互联网科技有限公司电话 杭州壁岐互联网科技有限公司 玉溪新华互联网科技好不好 互联网时代科技型公司的机会 国产互联网科技公司 众联互联网络科技 亚光科技低轨卫星互联网 恒生互联网科技趋势 科技互联网公司装修 互联网中国科技 互联网 的科技创新 亿人帮互联网科技 广西拼得多互联网科技有限公司 湖南洣水互联网科技有限公司扣款 和信科技工业互联网 中国互联网公司排名锤子科技 信承诺互联网科技有限公司 长沙渺峰互联网科技有限公司
0