缓存可以将数据保存在内存中,是互联网系统常常用到的。目前流行的缓存服务器有 MongoDB、Redis、Ehcache 等。缓存是在计算机内存上保存的数据,读取时无需再从磁盘读入,因此具备快速读取和使用的特点。
和大多数持久化框架一样,MyBatis 提供了一级缓存和二级缓存的支持。默认情况下,MyBatis 只开启一级缓存。
一、Mybatis的一级缓存
一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问,一级缓存是默认开启的。
在使用SqlSession第一次访问数据库时,会在对象中生成一个数据结构存储缓存数据。第一次使用对象进行查询时,会将查询结果保存到缓存中,下次使用该对象进行相同参数查询时,会直接在缓存中读取数据,而不会进行数据库操作。如果在使用该对象进行第二次查询之前进行增、删、改操作,会将缓存数据清空。
原理图:
![](https://img-blog.csdnimg.cn/img_convert/48c87b38b3d04d2e744dce6589a1a78c.png)