mybatis原理 mybatis一级缓存和二级缓存


一、解释缓存

缓存是计算机内存中的一块区域,用于保存临时数据。在数据处理中,缓存尤其重要,因为它能显著提升程序的性能。

二、缓存的种类与使用场景

1. 一级缓存

介绍:这是sqlSession对象的本地缓存。

生命周期:与sqlSession一致。

适用性:主要存放sqlSession的临时数据。

2. 二级缓存

介绍:这是SqlSessionFactory级别的缓存,可以被多个SqlSession共享。

配置与使用:需要手动开启,并配置相应的dao映射文件。

三、代码示例与解析

  • 代码示例(部分展示):
  • @Test
  • public void testFindAll() throws Exception { ... }
  • 这里是测试MyBatis中缓存功能的代码片段。
  • 通过多次执行findAll方法并关闭一级缓存,观察二级缓存的使用情况。
  • 测试结果解析:
  • 第一次查询后关闭一级缓存,再次查询时若二级缓存开启且数据未改变,则不会对数据库发出sql语句。
  • 若关闭二级缓存,再次查询时会向数据库发出sql语句。

```

四、二级缓存使用小结

1. 开启二级缓存:确保在MyBatis配置中开启了二级缓存功能。

2. 配置二级缓存:在相应的dao映射文件中配置二级缓存。

3. Pojo类实现Serializable接口:使用二级缓存的Pojo类必须实现`Serializable`接口,以便于序列化和存储。

4. 共享与使用:二级缓存是SqlSessionFactory级别的,只要是同一个SqlSessionFactory创建的SqlSession都可以共享二级缓存的内容。

5. 关闭二级缓存:若在某些情况下不需要使用二级缓存,可以在相应的配置或代码中关闭它。

五、总结