Mybatis 的缓存机制是什么样的
时间: 2024-05-18 19:17:28 浏览: 159
Mybatis 的缓存机制可以分为一级缓存和二级缓存。
一级缓存是指 SqlSession 级别的缓存,它默认是开启的。在同一个 SqlSession 中,如果执行了相同的查询语句,Mybatis 会直接从缓存中获取结果,而不需要再次发送 SQL 到数据库。一级缓存的作用范围是 SqlSession,当 SqlSession 关闭时,缓存也会被清除。
二级缓存是指 Mapper 级别的缓存,它需要手动开启。开启二级缓存后,Mybatis 会将查询结果缓存到一个共享的缓存区域(默认是 PerpetualCache),当再次执行相同的查询语句时,Mybatis 会先从二级缓存中获取结果,如果缓存中不存在,则会从数据库中查询,并将查询结果缓存到二级缓存中。二级缓存的作用范围是 Mapper 级别,也就是说,多个 SqlSession 中共享同一个 Mapper 的缓存,当某个 Mapper 中的数据发生变化时,对应的缓存也会被清除。二级缓存需要在 Mapper.xml 文件中通过配置开启,并指定缓存的类型和缓存的命名空间。
需要注意的是,Mybatis 的缓存机制虽然可以提高查询性能,但也会带来缓存不一致的问题。因此,在某些情况下需要手动清除缓存或禁用缓存。
阅读全文