MyBatis(缓存机制)
缓存可以极大的提升查询效率。 MyBatis系统中默认定义两级缓存(一级缓存和二级缓存)。 一、两级缓存 1、一级缓存:(本地缓存):sqlSession级别的缓存。一级缓存是一直开启的;sqlSession级别的一个Map。 与数据库同一次会话期间查询到的数据会放在本地缓存中 以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库; 一级缓存失效情况( 没有使用到当前一级缓存的情况,效果就是,还需要再向数据库发出查询 ): 1、sqlSession不同。 2、sqlSession相同,查询条件不同。(当前一级缓存中还没有这个数据) 3、sqlSession相同,两次查询之间执行了增删改操作( 这次增删改可能对当前数据有影响 ) 4、sqlSession相同,手动清除了一级缓存(缓存清空) 2、二级缓存:(全局缓存):基于namespace级别的缓存:一个namespace对应一个二级缓存: 工作机制: 1、一个会话,查询一条数据,这个数据就会被放在当前会话的一级缓存中; 2、如果会话关闭;一级缓存中的数据会被保存到二级缓存中;新的会话查询信息,就可以参照二级缓存中的内容。 3、sqlSession===EmployeeMapper===>Employee DepartmentMapper===