MyBatis一级缓存是指通过同一个SqlSession
中执行的相同查询会被缓存起来。
在 SpringBoot 中使用 MyBatis 时,每次接收一个请求,Spring Boot 会为该请求创建一个新的 SqlSession
实例。
SpringBoot 使用了 Spring 的事务管理机制来管理 SqlSession。在每个请求的上下文中,Spring Boot 会在事务开启之前为该请求创建一个 SqlSession,然后在事务提交或回滚之后关闭这个 SqlSession。
MyBatis二级缓存默认未开启,SpringBoot中使用MyBatis二级缓存时需要进行如下步骤。
第一步:开启MyBatis二级缓存,配置如下:
mybatis:
configuration:
# 开启MyBatis二级缓存
cache-enabled: false
第二部:在Mapper XML文件中配置<cache>
标签,示例如下:
<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时都是类似的使用流程。