你真的了解mybatis缓存吗?

本文详细介绍了MyBatis的一级缓存和二级缓存。一级缓存默认开启,作用于SqlSession,同一SqlSession内的重复查询可避免重复数据库操作。二级缓存可配置开启,跨SqlSession共享,提高查询效率。注意,增删改操作会导致缓存失效。理解并合理利用缓存机制,能有效提升应用性能。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

你对mybatis缓存有所了解吗?~又或者对他的缓存了解很模糊?


一、mybatis是什么?

mybatis是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性…

二、mybatis缓存

1.一级缓存

mybatis默认开启一级缓存,一级缓存的作用域sqlsession。

通常情况、每次查询我们都需要进行一次sql会话、也就是拿到一个全新的sqlsession。这时候就相当于产生了新的sql会话、此时一级缓存会失效。
所以,一般来说mybatis的一级缓存是不能很显著的被我们看到。

  • 问题来了,“我们要这mybatis一级缓存有什么用?”。肯定有用!可以使用两种办法、来利用mybatis的一级缓存。
  • ①同一个sqlsession内,进行重复使用,也就是一个sql会话中、多次进行查询操作(这个办法比较无力、就是没啥用,通常不会这样用)。
  • ②可以同spring开启事物、也可以达到使用mybatis一级缓存的效果
    注:mybatis一级、二级缓存生效的前提,都是未进行增删改!增删改!也就是未进行commit操作—否则会自动清空缓存,等待下一次查询,又将数据写入缓存。

2.二级缓存

	mybatis二级缓存,默认不开启。

如需要开启、需要自己手动在xml或者springboot配置文件中开启,根据您的项目是ssm还是springboot等…

  • mybatis二级缓存的作用域:namespace或者说是“sqlsessionfactory”。
  • 说人话就是不同的sqlsession中可以共享缓存、比如第一次查询后sqlsession会自动关闭,那么下一次查询又会产生新的sqlsession。(假如你在下次查询前,未进行增删改、commit操作),那么相同的查询操作、不会去数据库去取数据、而是从二级缓存中取。

那么问题来了,缓存有时效性吗?

  • 一级缓存没有时效性、也就是说sqlsession结束后、自动清除缓存。
  • 二级缓存可以设置缓存时效、也就是每隔多久,会清除一次缓存。但每次查询操作、都会将查询到的数据、存到缓存。

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了mybatis缓存~
作者:Java小陈,欢迎指出不足之处。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值