mybatis的一级缓存
时间: 2023-11-05 07:41:43 浏览: 40
MyBatis的一级缓存是指在同一个SqlSession中执行相同的查询语句时,第一次查询的结果会被缓存到内存中,下一次执行相同的查询语句时,直接从内存中获取结果,而不需要再去数据库中查询。一级缓存是默认开启的,可以通过配置文件进行关闭。
一级缓存的生命周期与SqlSession相同,当SqlSession关闭时,一级缓存也会被清空。在同一个SqlSession中,如果对数据进行了更新、插入或删除操作,会清空一级缓存中对应的数据,保证缓存中的数据与数据库中的数据一致。
需要注意的是,一级缓存是基于对象引用的,如果两个查询返回的结果对象相同,那么它们在缓存中的引用也是相同的,因此对其中一个对象的修改会影响到另一个对象的值。为了避免这种情况,可以使用MyBatis提供的二级缓存。
相关问题
mybatis一级缓存
Mybatis 一级缓存是指在同一个 SqlSession 中执行相同的 SQL 查询语句时,Mybatis 会将第一次查询结果缓存到内存中,后续查询可以直接从缓存中获取结果,而不需要再次查询数据库。一级缓存是 Mybatis 默认开启的,它是在 SqlSession 中实现的。
Mybatis 一级缓存的实现方式是将查询结果放到一个 Map 中,Map 的 key 是查询语句的 SQL 语句和参数组成的字符串,value 是查询结果。每个 SqlSession 中都有一个 Map,用于存放该 SqlSession 中执行的所有查询结果。
虽然 Mybatis 一级缓存能够提高查询效率,但是也会存在缓存污染的问题。当更新、插入、删除操作对数据库进行了修改时,Mybatis 会自动清空该 SqlSession 中的一级缓存,以避免缓存污染的问题。如果需要在同一个 SqlSession 中执行多个查询语句并且需要缓存所有的结果,可以使用 Mybatis 的二级缓存。
Mybatis一级缓存
MyBatis一级缓存是指在同一个SqlSession中多次执行相同的SQL语句时,MyBatis会将第一次执行的结果缓存起来,并在后续的执行中直接从缓存中获取结果,而不再去数据库查询。这样可以提高查询的性能和效率。
一级缓存的失效方式有以下几种情况:
1. 当进行了任何一次增删改操作(insert、update、delete)时,会清空一级缓存。
2. 当手动清空缓存(调用SqlSession的clearCache()方法)时,一级缓存也会被清空。
3. 当SqlSession关闭时,一级缓存会被清空。
一级缓存的执行流程如下:
1. 当使用同一个SqlSession对象执行查询语句时,MyBatis会先检查是否存在缓存,如果存在缓存则直接返回缓存中的结果。
2. 如果没有缓存,则执行真正的数据库查询操作,并将结果存入缓存。
3. 在同一个SqlSession中,如果多次执行相同的查询语句,MyBatis会直接从缓存中获取结果,而不再去查询数据库。
总结来说,MyBatis一级缓存是在同一个SqlSession中生效的,可以提高查询的性能和效率,但需要注意缓存的失效情况和清空缓存的时机。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [【MyBatis】MyBatis 一级缓存](https://blog.csdn.net/qq_21383435/article/details/124766731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [Mybatis一级缓存](https://blog.csdn.net/kandroid/article/details/130775457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]