mybatis的一级缓存和二级缓存怎么区分 举个例子说明?
时间: 2024-06-20 14:03:09 浏览: 8
Mybatis是一款优秀的ORM框架,在进行数据操作时,为了提高数据访问的效率,它提供了缓存机制,缓存分为一级缓存和二级缓存。
一级缓存是指在同一个SqlSession中,对于同一条SQL语句,第一次执行查询操作时,会将查询到的结果存储在缓存中,之后再执行相同的查询操作时,直接从缓存中获取结果,而不需要再次向数据库发起查询请求。一级缓存默认是开启的,并且无法关闭。
二级缓存是指在不同的SqlSession之间共享缓存,在同一个namespace下的所有SqlSession共享相同的二级缓存。当SqlSession执行查询操作时,如果开启了二级缓存,则会先从二级缓存中获取结果,如果没有找到,则再向数据库发起查询请求,并将查询到的结果存储在二级缓存中。当其他SqlSession执行相同的查询操作时,会先从二级缓存中获取结果,如果找到则直接返回结果,否则再向数据库发起查询请求。二级缓存默认是关闭的,需要在mybatis配置文件中进行配置。
举个例子说明:假设有一个User表,其中有两条数据id为1和2,现在我们要查询id为1的用户信息。
1. 第一次查询时,Mybatis会向数据库发起查询请求,并将查询到的结果存储在一级缓存中和二级缓存中(如果开启了二级缓存);
2. 第二次查询时,在同一个SqlSession中,由于之前已经查询过了id为1的用户信息,因此会直接从一级缓存中获取结果;
3. 第三次查询时,在另一个新的SqlSession中,如果开启了二级缓存,则会先从二级缓存中获取结果,如果没有找到则再向数据库发起查询请求。
相关问题
mybatis一级缓存和二级缓存和三级缓存?
MyBatis一级缓存和二级缓存区别如下:
一级缓存是SqlSession级别的缓存,当我们发起一次查询时,MyBatis会先到SqlSession缓存中查询是否有这个结果,如果有,直接返回缓存结果,如果没有,就去数据库中查询结果,查询完结果后,将结果放入SqlSession缓存中。
二级缓存是Mapper级别的缓存,当我们发起一次查询时,MyBatis会先到Mapper缓存中查询是否有这个结果,如果有,直接返回缓存结果,如果没有,就去数据库中查询结果,查询完结果后,将结果放入Mapper缓存中。二级缓存通常会开启,但是并不是所有的Mapper都需要开启二级缓存,需要根据具体情况进行配置。
MyBatis 一级缓存和二级缓存的区别
MyBatis一级缓存和二级缓存的区别如下:
1. 一级缓存是SqlSession级别的缓存,二级缓存是Mapper级别的缓存。
2. 一级缓存默认开启,无法关闭,二级缓存默认关闭,可以手动开启。
3. 一级缓存的作用域是同一个SqlSession,二级缓存的作用域是同一个Mapper。
4. 一级缓存的生命周期是和SqlSession一样长,二级缓存的生命周期是和应用程序一样长。
5. 一级缓存的更新机制是基于时间戳和刷新策略,二级缓存的更新机制是基于触发器和事务提交。
下面是一个使用MyBatis的例子,演示了如何开启和关闭二级缓存:
```xml
<!-- 开启二级缓存 -->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- 关闭二级缓存 -->
<settings>
<setting name="cacheEnabled" value="false"/>
</settings>
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)