什么是Mybaits缓存机制
本篇内容介绍了“什么是Mybaits缓存机制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联公司-专业网站定制、快速模板网站建设、高性价比闵行网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式闵行网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖闵行地区。费用合理售后完善,十多年实体公司更值得信赖。
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 一级缓存失效
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缓存机制”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
分享名称:什么是Mybaits缓存机制
分享路径:http://myzitong.com/article/ieioso.html