mybatis一级缓存
时间: 2023-07-23 13:55:47 浏览: 107
Mybatis 一级缓存是指在同一个 SqlSession 中执行相同的 SQL 查询语句时,Mybatis 会将第一次查询结果缓存到内存中,后续查询可以直接从缓存中获取结果,而不需要再次查询数据库。一级缓存是 Mybatis 默认开启的,它是在 SqlSession 中实现的。
Mybatis 一级缓存的实现方式是将查询结果放到一个 Map 中,Map 的 key 是查询语句的 SQL 语句和参数组成的字符串,value 是查询结果。每个 SqlSession 中都有一个 Map,用于存放该 SqlSession 中执行的所有查询结果。
虽然 Mybatis 一级缓存能够提高查询效率,但是也会存在缓存污染的问题。当更新、插入、删除操作对数据库进行了修改时,Mybatis 会自动清空该 SqlSession 中的一级缓存,以避免缓存污染的问题。如果需要在同一个 SqlSession 中执行多个查询语句并且需要缓存所有的结果,可以使用 Mybatis 的二级缓存。
相关问题
Mybatis一级缓存
MyBatis 的一级缓存指的是在同一个 SqlSession 中的多次相同查询操作可以直接从缓存中获取结果,而不需要再次查询数据库。MyBatis 的一级缓存是默认开启的,也是无法关闭的。
MyBatis 的一级缓存是基于 SqlSession 的,因此当 SqlSession 关闭时,缓存也会被清空。此外,当执行了增删改操作时,缓存也会被清空,因为这些操作可能会影响到查询结果。
一级缓存的范围是 SqlSession,因此不同的 SqlSession 之间的缓存是互相独立的。如果想要在多个 SqlSession 中共享缓存,可以考虑使用 MyBatis 的二级缓存。
mybatis 一级缓存二级缓存
MyBatis一级缓存和二级缓存区别如下:
一级缓存是SqlSession级别的缓存,当我们发起一次查询时,MyBatis会先到SqlSession缓存中查询是否有这个结果,如果有,直接返回缓存结果,如果没有,就去数据库中查询结果,查询完结果后,将结果放入SqlSession缓存中。
二级缓存是Mapper级别的缓存,当我们发起一次查询时,MyBatis会先到Mapper缓存中查询是否有这个结果,如果有,直接返回缓存结果,如果没有,就去数据库中查询结果,查询完结果后,将结果放入Mapper缓存中。二级缓存通常会开启,但是并不是所有的Mapper都需要开启二级缓存,需要根据具体情况进行配置。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.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)