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语句

相关推荐
一定要AK1 小时前
Spring 入门核心笔记
java·笔记·spring
凯尔萨厮1 小时前
创建SpringWeb项目(Spring2.0)
spring·mvc·mybatis
不知名的老吴3 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
杰克尼4 小时前
redis(day03-商户查询缓存)
数据库·redis·缓存
刘~浪地球5 小时前
Redis 从入门到精通(十三):哨兵与集群
数据库·redis·缓存
一个有温度的技术博主6 小时前
Lua语法详解:从变量声明到循环遍历的避坑指南
redis·缓存·lua
凯尔萨厮7 小时前
Spring学习笔记(基于配置文件)
spring
bobasyu7 小时前
Claude Code 源码笔记 -- queryLoop
java·笔记·spring
计算机学姐7 小时前
基于SpringBoot的高校竞赛管理系统
java·spring boot·后端·spring·信息可视化·tomcat·mybatis
砍材农夫7 小时前
spring-ai 第七模型介绍-向量模型
java·人工智能·spring