MyBatis的一级缓存

什么是缓存?

把当前查询出来的数据进行记录,下一次查询相同数据时,从缓存中去取,就不会重新访问数据库了

MyBatis的缓存分为一级缓存和二级缓存

一级缓存默认是开启的

缓存只针对查询功能有效

CacheMapper

CacheMapper.xml

测试

dart 复制代码
package com.baidu.mybatis;
import com.baidu.mybatis.mapper.CacheMapper;
import com.baidu.mybatis.pojo.Emp;
import com.baidu.mybatis.utils.SqlSessionUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class CacheMapperTest {

    @Test
    public void testCache() {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SqlSession sqlSession2 = SqlSessionUtils.getSqlSession();

        CacheMapper mapper = sqlSession.getMapper(CacheMapper.class);

        Emp emp = mapper.getEmpByEid(1);
        Emp emp2 = mapper.getEmpByEid(1);

        System.out.println("emp = " + emp);
        System.out.println("emp2 = " + emp2);

        System.out.println("--------------------");

        CacheMapper mapper1 = sqlSession.getMapper(CacheMapper.class);
        Emp emp3 = mapper1.getEmpByEid(1);
        Emp emp4 = mapper1.getEmpByEid(1);
        System.out.println("emp3 = " + emp3);
        System.out.println("emp4 = " + emp4);

        System.out.println("------------------------");

        CacheMapper mapper2 = sqlSession2.getMapper(CacheMapper.class);
        Emp emp5 = mapper2.getEmpByEid(1);
        Emp emp6 = mapper2.getEmpByEid(1);
        System.out.println("emp5 = " + emp5);
        System.out.println("emp6 = " + emp6);


    }

}

可以看到不同sqlsession,才会输出sql语句

相关推荐
二哈赛车手8 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
栗子~~8 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
隔窗听雨眠9 小时前
多活部署、CDN加速与边缘缓存全链路优化实战
缓存
未若君雅裁10 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
阿维的博客日记11 小时前
Nacos 为什么能让配置动态生效?(涉及 @RefreshScope 注解)
java·spring
1892280486112 小时前
NY352固态MT29F32T08GWLBHD6-24QJ:B
大数据·服务器·人工智能·科技·缓存
丷丩13 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
Simon5231414 小时前
MyBatis三大核心文件:Entity、DAO、Mapper
mybatis
柿柿快乐14 小时前
Redis 入门第一课:全局命令、内部编码与单线程模型
redis·学习·缓存·基础教学
磊 子14 小时前
1.4CPU缓存一致性
java·spring cloud·缓存·系统