Mybatis学习笔记(十二)——一级缓存和二级缓存

本文详细介绍了Mybatis的一级缓存和二级缓存的工作原理、测试、应用及配置。一级缓存默认开启,事务提交后清空。二级缓存范围更广,多个SqlSession可共享,但可能引发脏读问题。二级缓存配置涉及SqlMapConfig.xml与Mapper文件,适合访问频繁且实时性要求不高的查询场景。
摘要由CSDN通过智能技术生成
本博客源码下载:戳我一下
Mybatis学习笔记汇总:戳我一下

一级缓存

一、一级缓存工作原理

这里写图片描述
第一次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,如果没有,从数据库查询用户信息。
得到用户信息,将用户信息存储到一级缓存中。
如果sqlSession去执行commit操作(执行插入、更新、删除),清空SqlSession中的一级缓存,这样做的目的为了让缓存中存储的是最新的信息,避免脏读。
第二次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,缓存中有,直接从缓存中获取用户信息。

二、一级缓存的测试

mybatis默认支持一级缓存,不需要在配置文件去配置。
测试代码一(不执行commit操作)

    @Test
    public void testCache1() throws Exception{
        SqlSession sqlSession = sqlSessionFactory.openSession();//创建代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //下边查询使用一个SqlSession
        //第一次发起请求,查询id为1的用户
        User user1 = userMapper.findUserById(1);
        System.out.println(user1);      
        //第二次发起请求,查询id为1的用户
        User user2 = userMapper.findUserById(1);
        System.out.println(user2);
        sqlSession.close();
    }

测试截图
这里写图片描述

这里写图片描述

测试代码二(执行commit操作)

    @Test
    public void testCache1() throws Exception{

        SqlSession sqlSession = sqlSessionFactory.openSession();//创建代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        //下边查询使用一个SqlSession
        //第一次发起请求,查询id为1的用户
        User user1 = userMapper.findUserById(1);
        System.out
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值