提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
你对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小陈,欢迎指出不足之处。