前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【开发日记】MyBatis缓存

【开发日记】MyBatis缓存

作者头像
全栈开发日记
发布2023-09-02 11:28:17
2030
发布2023-09-02 11:28:17
举报
文章被收录于专栏:全栈开发日记

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时都是类似的使用流程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot中的MyBatis一级缓存
  • SpringBoot中的MyBatis二级缓存
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档