mybatis的缓存内容(上)

简介: mybatis的缓存内容

1.一级缓存

1.概念

 一级缓存是MyBatis中的默认缓存机制,也称为本地缓存。它是指SqlSession级别的缓存,即同一个SqlSession中多次执行相同的查询语句,第一次执行时会将查询结果缓存下来,当第二次执行相同的查询语句时,直接从缓存中取出数据,而不会再次去数据库中查询。一级缓存的生命周期与SqlSession保持一致,当SqlSession关闭时,一级缓存也随之不存在

我们先创建一个工具类

package com.guigu.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class SqlSessionUtil {
//    封装直接拿到SqlSession
    public static SqlSession getSqlSession(){
        InputStream resourceAsStream = null;
        try {
            resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
            return new SqlSessionFactoryBuilder().build(resourceAsStream).openSession(true);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

  我们以后哪拿sqlSeesion就从这个工具类里面拿

利用一级缓存使用相同的sqlSession执行相同的sql的语句第二的sql语句应该是不执行的直接从缓存里面取。

@Test
    public void test07(){
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        System.out.println(mapper.selectEmpById(1));
        System.out.println(mapper.selectEmpById(1));
    }

看日志可以发现只执行过一个sql语句

注意

注意如果在两次出查询中执行了任意一次增删改都会将缓存清除,因为执行增删改之后 很有可能影响到了上次查询的数据,所以下一次的查询将会重新从数据库中获取。

手动清空缓存
1.直调用对应的api
sqlSession.clearCache();
2.也可以通过关闭sqlSession来清理缓存当然这样清理缓存并没有什么实际意义
sqlSession.close();

mybatis的缓存内容(下)https://developer.aliyun.com/article/1429069

目录
相关文章
|
1月前
|
缓存 Java 数据库连接
MyBatis三级缓存实战:高级缓存策略的实现与应用
MyBatis三级缓存实战:高级缓存策略的实现与应用
36 0
MyBatis三级缓存实战:高级缓存策略的实现与应用
|
1月前
|
XML 缓存 Java
MyBatis二级缓存解密:深入探究缓存机制与应用场景
MyBatis二级缓存解密:深入探究缓存机制与应用场景
72 2
MyBatis二级缓存解密:深入探究缓存机制与应用场景
|
1月前
|
存储 缓存 Java
探秘MyBatis缓存原理:Cache接口与实现类源码分析
探秘MyBatis缓存原理:Cache接口与实现类源码分析
39 2
探秘MyBatis缓存原理:Cache接口与实现类源码分析
|
2月前
|
存储 缓存 Java
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
|
2月前
|
缓存 Java 数据库连接
mybatis 数据库缓存的原理
MyBatis 是一个流行的 Java 持久层框架,它封装了 JDBC,使数据库交互变得更简单、直观。MyBatis 支持两级缓存:一级缓存(Local Cache)和二级缓存(Global Cache),通过这两级缓存可以有效地减少数据库的访问次数,提高应用性能。
285 1
|
2月前
|
存储 缓存 Java
【MyBaits】4、延迟加载、MyBatis 的缓存
【MyBaits】4、延迟加载、MyBatis 的缓存
23 0
|
3月前
|
SQL 缓存 Java
mybatis缓存详解
mybatis缓存详解
25 0
|
4月前
|
缓存 Java 数据库连接
mybatis的缓存内容(下)
mybatis的缓存内容
30 0
|
4月前
|
缓存 Java 数据库连接
|
4月前
|
缓存 Java 数据库连接
MyBatis支持的缓存刷新模式
MyBatis支持的缓存刷新模式
217 1