mybatis的一级缓存和二级缓存
一、
一级缓存:它指的是mybatis的sqlsession对象缓存。
当我们执行查询之后,查询的结果会同时存入到sqlsession为我们提供的一块区域中.
该区域的结构是一个Map,当我们再次查询同样的数据,mybatis会首先去sqlssion缓存中查找是否有该数据,有的话直接获取
二、解析一级缓存
第一次发起查询用户 id 为 1 的用户信息,先去找缓存中是否有 id 为 1 的用户信息,如果没有,从数据库查 询用户信息。
得到用户信息,将用户信息存储到一级缓存中。
如果 sqlSession 去执行 commit 操作(执行插入、更新、删除),清空 SqlSession 中的一级缓存,这样 做的目的为了让缓存中存储的是最新的信息,避免脏读。
第二次发起查询用户 id 为 1 的用户信息,先去找缓存中是否有 id 为 1 的用户信息,缓存中有,直接从缓存 中获取用户信息
三、
二级缓存:它指的是Mybatis中的sqlsessionFactory对象缓存,有同一个sqlsessionFactory对象创建的sqlsession共享其缓存
四、二级缓存的实现步骤
1:第一步:在 SqlMapConfig.xml 文件开启二级缓存(在SqlMapConfig.xml中配置)
2:第二步:让当前映射文件支持二级缓存(在UserDao.xml中配置)
3:第三步:让当前操作支持二级缓存(在select标签中配置)