Mybatis的缓存理解
Mybatis的缓存,包括一级缓存和二级缓存
一级缓存(连接内缓存—内存)指的就是sqlsession,在sqlsession中有一个数据区域,是map结构,这个区域就是一级缓存区域。一级缓存中的key是由sql语句、条件、statement等信息组成一个唯一值。一级缓存中的value,就是查询出的结果对象。“ Sql+?参数值”
二级缓存(跨连接缓存-文件)指的就是同一个namespace下的mapper,二级缓存中,也有一个map结构,这个区域就是二级缓存区域。一级缓存中的key是由sql语句、条件、statement等信息组成一个唯一值。二级缓存中的value,就是查询出的结果对象。
一级缓存是默认使用的。
二级缓存需要手动开启。
一级缓存
二级缓存
二级缓存指的就是同一个namespace下的mapper,二级缓存中,也有一个map结构,这个区域就是二级缓存区域。二级缓存中的key是由sql语句、条件、statement等信息组成一个唯一值。二级缓存中的value,就是查询出的结果对象。
开启二级缓存开关
1、 开启二级缓存的总开关
2、 在mapper映射文件中开启二级缓存
序列化
使用二级缓存需要对查询映射对象实现序列化
禁用缓存. 只能禁用二级缓存
默认值是true
刷新缓存
对于访问响应速度要求高,但是实时性不高的查询,可以采用二级缓存技术。
注意:在使用二级缓存的时候,要设置一下刷新间隔(cache标签中有一个flashInterval属性)来定时刷新二级缓存,这个刷新间隔根据具体需求来设置,比如设置30分钟、60分钟等,单位为毫秒。
清除二级缓存的方式
1、session断开连接
2. session.clearCache();
3. session.commit()