Mybatis缓存(1)--------系统缓存及简单配置介绍
时间: 2023-08-25 16:13:16 浏览: 100
Mybatis-ehcache 1.2.1源码(ehcache-cache-mybatis-ehcache-1.2.1.zip)
Mybatis中的缓存机制可以帮助我们提高数据访问的性能。Mybatis提供了两种缓存机制:一级缓存和二级缓存。
一级缓存是Mybatis默认开启的,它是基于SqlSession的缓存,也就是说在同一个SqlSession中,如果多次查询同样的SQL语句并且参数也相同,那么Mybatis会直接从缓存中获取结果,而不再去查询数据库。一级缓存的生命周期与SqlSession相同,当SqlSession关闭时,一级缓存也会被清空。
二级缓存是基于namespace级别的缓存,它可以跨SqlSession共享数据。当开启了二级缓存后,在同一个namespace中执行相同的SQL语句时,Mybatis会先从二级缓存中查找数据,如果找到了就直接返回结果。如果没有找到,则会去查询数据库,并将查询结果放入到二级缓存中。二级缓存的生命周期与Mapper的namespace相同,当应用重启或者刷新了Mapper配置文件时,二级缓存会被清空。
对于一级缓存的配置,我们无需做任何配置,因为它是默认开启的。而对于二级缓存的配置,我们需要在Mapper配置文件中添加相应的配置项。例如:
```xml
<mapper namespace="com.example.UserMapper">
<cache type="org.apache.ibatis.cache.impl.PerpetualCache"/>
</mapper>
```
上述配置中,`type`属性指定了具体使用的缓存实现类,这里使用的是PerpetualCache,它是Mybatis提供的默认实现。
除了使用Mybatis自带的缓存实现,我们还可以使用第三方缓存框架,比如Ehcache、Redis等。在这种情况下,我们需要在Mapper配置文件中指定具体使用的缓存实现类,并配置相应的缓存参数。
需要注意的是,缓存虽然可以提高查询性能,但也会带来数据一致性的问题。当我们对数据库进行增删改操作时,需要及时清空对应的缓存,以保证数据的准确性。
阅读全文