Mybatis中的缓存机制

缓存机制的作用

有效降低用户访问物理设备的频次,提高用户响应速度

分类

1.MyBatis自身缓存:一级缓存、二级缓存

2.Redis缓存  读取10万次 /s  写8.6万次/s

一级缓存

默认开启一级缓存,可以在同一个sqlsession对象中查询相同的数据,实现数据共享

测试代码

/*一级缓存测试1*/
    @Test
    public void test5(){
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        Dept dept= new Dept();
        List<Dept> list=mapper.findAll(dept);
        List<Dept> list2=mapper.findAll(dept);
        System.out.println(list==list2);//返回true
        sqlSession.close();
    }
/*一级缓存测试2*/
    @Test
    public void test6(){
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        Dept dept= new Dept();
        List<Dept> list=mapper.findAll(dept);
        SqlSession sqlSession2 = sqlSessionFactory.openSession(true);
        DeptMapper mapper2 = sqlSession2.getMapper(DeptMapper.class);
        Dept dept2= new Dept();
        List<Dept> list2=mapper2.findAll(dept);
        System.out.println(list==list2);//返回false
        sqlSession.close();
    }

综上所述,MyBatis中的一级缓存是默认开启的,且只在一个sqlSession中生效

二级缓存

也是默认开启的,但是需要手动标识,可以在同一个sqlSessionFactory内部有效,是全部配置

二级缓存标识

在对应的映射文件中添加<cache/>标签

错误示范

原因:sqlSession查询数据之后,业务逻辑执行成功,并且关闭之后,一级缓存才能将数据交给二级缓存保管,所以此处需要先关闭sqlSession

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值