mybatis 梳理17--缓存 (占坑) 一级缓存、二级缓存、三级缓存

1、为什么要用缓存?

如果缓存中有数据,就不用从数据库获取,大大提高系统性能。

mybatis提供一级缓存和二级缓存

2、一级缓存:

(1)一级缓存是sqlsession级别的缓存

在操作数据库时,需要构造sqlsession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据

不同的sqlsession之间的缓存区域是互相不影响的。

(2)一级缓存工作原理:

①第一次发起查询sql查询用户id为1的用户,先去找缓存中是否有id为1的用户,如果没有,再去数据库查询用 户信息。得到用户信息,将用户信息存储到一级缓存中。

②如果sqlsession执行了commit操作(插入,更新,删除),会清空sqlsession中的一级缓存,避免脏读

③第二次发起查询id为1的用户,缓存中如果找到了,直接从缓存中获取用户信息

④mybatis默认支持并开启一级缓存。

(3)一级缓存演示

             

(4)一级缓存失效

1. sqlSession不同

2. 当sqlSession对象相同的时候,查询的条件不同,原因是第一次查询时候一级缓存中没有第二次查询所需要的数据

3. 当sqlSession对象相同,两次查询之间进行了插入的操作

4. 当sqlSession对象相同,手动清除了一级缓存中的数据

原文地址:https://www.cnblogs.com/Master-Sun/p/14313704.html