码上敲享录 > java面试题及答案大全 > mybatis一级缓存、二级缓存

mybatis一级缓存、二级缓存

上一章章节目录下一章 2023-07-11已有222人阅读 评论(0)

MyBatis提供了一级缓存和二级缓存来提升查询性能和减轻数据库的压力。


1. 一级缓存:

  - 一级缓存是MyBatis的默认缓存机制,它是在SqlSession级别上的缓存,即在同一个SqlSession内的多次查询中,如果查询条件相同,那么第一次查询的结果会被缓存起来,后续的相同查询会直接从缓存中获取,而不会再去执行SQL查询语句。

  - 一级缓存是与SqlSession关联的,当SqlSession关闭或者执行了更新操作(插入、更新、删除)时,一级缓存就会被清空。

  - 默认情况下,一级缓存是开启的,可以通过在MyBatis配置文件中的`<setting>`标签中设置`localCacheScope`属性为`STATEMENT`来关闭一级缓存。


2. 二级缓存:

  - 二级缓存是基于Mapper级别的缓存,不同的SqlSession可以共享该级别的缓存。它可以跨SqlSession的多个查询中使用。

  - 二级缓存是默认关闭的,需要手动开启,可以在MyBatis配置文件中的`<setting>`标签中设置`<setting name="cacheEnabled" value="true"/>`来开启二级缓存。

  - 二级缓存的有效范围只限于同一个Mapper,不同Mapper之间的缓存互相隔离。

  - 若要使用二级缓存,需要保证Mapper类和映射文件中对应的查询语句开启了缓存,可以在映射文件中的`<select>`、`<insert>`、`<update>`、`<delete>`标签中设置`useCache="true"`。


需要注意的是,缓存虽然可以提升查询性能,但在一些特定情况下也可能带来数据不一致的问题,因此在使用缓存时需要慎重考虑,并根据具体业务场景进行配置和使用。


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交