image.png

    两级缓存:
    一级缓存:(本地缓存):sqlSession级别的缓存。一级缓存是一直开启的
    与数据库同一次会话期间查询到的数据会放到本地缓存中。

    一级缓存失效情况:(没有使用到当前一级缓存的情况,效果就是,还需要再向数据库发出查询)
    1、sqlSession不同
    2、sqlSession相同,查询条件不同。(当前一级缓存中还没有这个九局)
    3、sqlSession相同,两次查询之间执行了增删改操作。
    4、sqlSession相同,手动清除了缓存(缓存清空)
    clearCache()方法 (sqlSession.clearCache())

    二级缓存:(全局缓存):基于namespace级别的缓存,一个namespace对应一个二级缓存
    工作机制:
    1、一个会话,查询一条数据,这个数据就会被放在当前会话的一级缓存中。
    2、如果会话关闭,一级缓存中的数据会被保存到二级缓存中。新的会话查询信息,就可以参照二级缓存。
    3、不同的namespace查出的数据会放在自己对应的缓存中(map)

    使用:
    1、在配置文件中,开启二级缓存
    image.png
    image.png
    2、去mapper.xml文件中配置使用二级缓存
    3、POJO类需要实现序列化接口
    (即bean类要实现Serializable接口)
    image.png
    image.png

    image.png