Mybatis缓存

一、缓存定义:

  • 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。mybatis提供查询缓存,用于减轻数据库压力,提高数据库性能。

二、缓存执行机制:

  • 在进行数据库访问时,首先去访问缓存,如果缓存中有要访问的数据,则直接返回客户端,如果没有则去访问数据库,在库中得到数据后,先在缓存放一份,再返回客户端。
  • mybaits提供一级缓存和二级缓存。默认开启一级缓存。
  • 如果sqlSession去执行commit操作(执行插入、更新、删除),则清空SqlSession中的所有缓存,这样做的目的为了让缓存中存储的是最新的信息,避免脏读。

Mybatis缓存_第1张图片

三、一级缓存:

  • mybaits提供一级缓存和二级缓存。默认开启一级缓存。
  • 一级缓存使用的是SqlSession的作用域,同一个sqlSession共享一级缓存的数据。

四、二级缓存:

  • 二级缓存使用的是mapper的作用域,不同的sqlSession只要访问的同一个mapper.xml文件,则共享二级缓存作用域。
  • 二级缓存需要手动开启:SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓存,并且要让实体类实现serializable接口,具体如下:
    (1)SqlMapConfig.xml中加入设置:
    Mybatis缓存_第2张图片
    (2)Mapper.xml文件中二启二级缓存,使用
    在这里插入图片描述
    (3)实体类必须实现java.io.serializable接口,保证实体可序列化:
    Mybatis缓存_第3张图片

你可能感兴趣的