SSM之Mybatis缓存和整合外部缓存框架

查询缓存

一级缓存是按session级别的,每一个sqlSession操作一个HashMap 互不影响。

二级缓存是mapper级别的,多个sqlSession操作一个二级缓存。

1 、一级缓存

工作原理:
SSM之Mybatis缓存和整合外部缓存框架_第1张图片

mybatis默认支持一级缓存,不需要去配置。

2、二级缓存

SSM之Mybatis缓存和整合外部缓存框架_第2张图片

以mapper(namespace)为标识,如果调用mapper的方法去查询出结果,那么就会在缓存中存入,那么同一个mapper的另外的方法查询的话,就不用执行数据库了。

2.1 开启缓存

第一步:核心配置文件中开启(默认开启)

SSM之Mybatis缓存和整合外部缓存框架_第3张图片

第二步:在mapper.xml表示要使用二级缓存

SSM之Mybatis缓存和整合外部缓存框架_第4张图片

2.2 将pojo类序列化

目的是为了将缓存数据取出执行反序列化,因为二级缓存的存储介质多种多样。
SSM之Mybatis缓存和整合外部缓存框架_第5张图片

2.3 测试一下

SSM之Mybatis缓存和整合外部缓存框架_第6张图片
close()之后才会把数据加入缓存

效果是:跨不同的session也使用同一个缓存。不过在commit之后会清空缓存。

2.4 二级缓存的参数设置

2.4.1 禁用二级缓存

当业务变动频繁,或者每次数据要求最新的,例如用户信息。那么就可以把在它的sql语句禁用。