mybatis的缓存机制

一级缓存

一级缓存指的就是sqlsession,在sqlsession中有一个数据区域,是map结构,这个区域就是一级缓存区域。一级缓存中的key是由sql语句、条件、statement等信息组成一个唯一值。一级缓存中的value,就是查询出的结果对象。一级缓存是默认使用的。

原理:

mybatis缓存机制_缓存

测试:

mybatis缓存机制_数据库_02


mybatis缓存机制_mybatis_03


mybatis缓存机制_mybatis_04

二级缓存

二级缓存指的就是同一个namespace下的mapper,二级缓存中,也有一个map结构,这个区域就是二级缓存区域。二级缓存中的key是由sql语句、条件、statement等信息组成一个唯一值。二级缓存中的value,就是查询出的结果对象。二级缓存需要手动开启。

原理:

mybatis缓存机制_java_05

开启二级缓存的总开关

mybatis缓存机制_缓存_06

在mapper映射文件中开启二级缓存

mybatis缓存机制_java_07

pojo序列化

mybatis缓存机制_数据库_08

测试

mybatis缓存机制_java_09


mybatis缓存机制_mybatis_10


mybatis缓存机制_数据库_11


mybatis缓存机制_java_12

禁用缓存

mybatis缓存机制_mybatis_13

刷新缓存

mybatis缓存机制_spring_14

缓存原理图

mybatis缓存机制_java_15