温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是Mybaits缓存机制

发布时间:2021-10-12 09:23:20 来源:亿速云 阅读:111 作者:iii 栏目:编程语言

本篇内容介绍了“什么是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();

    }

什么是Mybaits缓存机制

由于有一级缓存的缘故,所以不用再调用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();

    }

什么是Mybaits缓存机制

由于SqlSession的不同

使得没有缓存

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

什么是Mybaits缓存机制

什么是Mybaits缓存机制

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

什么是Mybaits缓存机制

什么是Mybaits缓存机制

4.手动清除了一级缓存

什么是Mybaits缓存机制

执行了openSession.clearCache()方法

什么是Mybaits缓存机制

2.二级缓存

全局缓存

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

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

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

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

2.1 开启二级缓存

<settings>

<!--//开启二级缓存-->

<setting name="cacheEnabled" value="true"/>

</settings>

开启二级缓存

什么是Mybaits缓存机制

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();

    }

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

什么是Mybaits缓存机制

2.2 二级缓存的属性

什么是Mybaits缓存机制

cacheEnabled=“true”

开启二级缓存

cacheEnabled=“false”

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

什么是Mybaits缓存机制

useCache=“false”

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

什么是Mybaits缓存机制

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

默认为false

3.缓存原理图

什么是Mybaits缓存机制

缓存查询顺序:

二级缓存

一级缓存

数据库

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI