mybatis的缓存内容(下)

简介: mybatis的缓存内容

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

2.二级缓存

1.概念

二级缓存是MyBatis提供的全局性的缓存机制。它是指跨SqlSession的缓存,即多个SqlSession共享同一个缓存区域,因此可以避免多个SqlSession重复查询相同的数据。二级缓存需要在MyBatis的配置文件中开启,并在Mapper.xml文件中指定使用二级缓存。另外,需要注意的是,如果数据库中的数据发生了变化,则缓存中的数据也需要更新,MyBatis提供了相应的缓存策略来解决这个问题。

2.实现

简单来说就是通过同一个sqlSessionFactory提供的sqlSeesion那么它们共享一个缓存区

默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行:

<cache/>

因为我们需要通过一个sqlFactory工厂所以上面的工具类是无法使用的,并且表 对应的实体类必须要序列化接口Serializable

代码进行修改如下:

InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
  参数true开启自动提交
SqlSession sqlSession = factory.openSession(true);
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
mapper.selectEmpById(1);
  注意一定要关闭第一个sqlSession要不然缓存还是将保存到一级缓存
sqlSession.close();
SqlSession sqlSession2 = factory.openSession(true);
EmpMapper mapper1 = sqlSession2.getMapper(EmpMapper.class);
mapper1.selectEmpById(1);

对应的实体类

ackage com.guigu.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp implements Serializable {
    private String id;
    private String empUsername;
    private Integer deptId;
    private Dept dept;
}

观看运行日志如下

只要Cache Hit Ratio(缓存命中率)不为0就代表成功

3.缓存查询的顺序

先查询而二级缓存,有因为二级缓存中可能会有其他程序已经查询出来的数据,直接拿出来用即可

如过二级缓存没有,在查一级缓存。

如果一级缓存也没有则查询数据库

SqlSession关闭之后,一级缓存中的数据会写入二级缓存

目录
相关文章
|
3月前
|
缓存 Java 数据库连接
MyBatis的缓存
MyBatis的缓存
|
8天前
|
XML 缓存 Java
MyBatis二级缓存解密:深入探究缓存机制与应用场景
MyBatis二级缓存解密:深入探究缓存机制与应用场景
42 2
MyBatis二级缓存解密:深入探究缓存机制与应用场景
|
1月前
|
存储 缓存 Java
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
|
1月前
|
缓存 Java 数据库连接
mybatis 数据库缓存的原理
MyBatis 是一个流行的 Java 持久层框架,它封装了 JDBC,使数据库交互变得更简单、直观。MyBatis 支持两级缓存:一级缓存(Local Cache)和二级缓存(Global Cache),通过这两级缓存可以有效地减少数据库的访问次数,提高应用性能。
282 1
|
1月前
|
存储 缓存 Java
【MyBaits】4、延迟加载、MyBatis 的缓存
【MyBaits】4、延迟加载、MyBatis 的缓存
22 0
|
2月前
|
SQL 缓存 Java
mybatis缓存详解
mybatis缓存详解
22 0
|
3月前
|
SQL 缓存 Java
mybatis的缓存内容(上)
mybatis的缓存内容
31 0
|
3月前
|
缓存 Java 数据库连接
|
3月前
|
缓存 Java 数据库连接
MyBatis支持的缓存刷新模式
MyBatis支持的缓存刷新模式
217 1
|
3月前
|
缓存 Java 数据库连接
Mybatis之缓存
【1月更文挑战第4天】 一、MyBatis的一级缓存 二、MyBatis的二级缓存 三、二级缓存的相关配置 四、MyBatis缓存查询的顺序 五、整合第三方缓存EHCache 1、添加依赖 2、各个jar包的功能 3、创建EHCache的配置文件ehcache.xml 4、设置二级缓存的类型 5、加入logback日志 6、EHCache配置文件说明
57 3