【开发日记】MyBatis缓存

2023-09-02 11:28:17 浏览数 (1)

SpringBoot中的MyBatis一级缓存

MyBatis一级缓存是指通过同一个SqlSession中执行的相同查询会被缓存起来。

在 SpringBoot 中使用 MyBatis 时,每次接收一个请求,Spring Boot 会为该请求创建一个新的 SqlSession 实例。

SpringBoot 使用了 Spring 的事务管理机制来管理 SqlSession。在每个请求的上下文中,Spring Boot 会在事务开启之前为该请求创建一个 SqlSession,然后在事务提交或回滚之后关闭这个 SqlSession。

SpringBoot中的MyBatis二级缓存

MyBatis二级缓存默认未开启,SpringBoot中使用MyBatis二级缓存时需要进行如下步骤。

第一步:开启MyBatis二级缓存,配置如下:

代码语言:javascript复制
mybatis:
  configuration:
    # 开启MyBatis二级缓存
    cache-enabled: false

第二部:在Mapper XML文件中配置<cache>标签,示例如下:

代码语言:javascript复制
<mapper namespace="com.example.MyMapper">

  <!-- ... 其他 SQL 映射语句 ... -->

  <cache
    eviction="LRU"          缓存淘汰策略,可选值:LRU, FIFO, SOFT, WEAK
    flushInterval="60000"   自动刷新缓存的时间间隔,单位为毫秒
    size="1024"             缓存的最大元素数
    readOnly="true"/>        缓存是否只读,true 表示只读,false 表示可读写,默认为 false

</mapper>

注意:在拷贝时中文文字需要删掉,以及将mapper命名空间替换成你自己的。

属性说明

eviction:指定缓存淘汰策略,常见的有 LRU(最近最少使用)、FIFO(先进先出)、SOFT(软引用)、WEAK(弱引用)等。

flushInterval:设置自动刷新缓存的时间间隔,以毫秒为单位。如果设置为 0 表示不自动刷新。

size:指定缓存的最大元素数。超过这个数量时,会按照缓存淘汰策略清除部分缓存。

readOnly:设置缓存是否只读。如果设置为 true,缓存中的数据将不会被修改。这可以提高缓存性能。

结语

这里只示例了SpringBoot中如何配置和使用MyBatis缓存,在其他框架以及单独使用MyBatis时都是类似的使用流程。

0 人点赞