Mybatis缓存
一级缓存
一级缓存在sqlsession中,当我们发起一次查询时,会将结果保存在缓存中。
再次查询时是在缓存中查找,但是注意,当我们在关闭sqlsession,
调用sqlsession的增,删,改,或者commit,或者直接调用清空缓存的方法时,
都会清空缓存,再次查询时,依旧是访问数据库,也就是两次查询不是同一个对象。
二级缓存
二级缓存是在sqlsessionFactory对象中的缓存,
对同一个sqlsessionFactory对象创建的sqlsession共享同一个缓存,
保存的是键值对形式,当再次查询时,会再次创建一个 目标对象,
然后将缓存中的数据保存在该对象中。这就是为什么两次查询不是同一个对象的原因。
但是向数据库中查询次数只有一次。
开启二级缓存
1.mybatis主配置文件中,添加支持二级缓存。
2.Mapper.xml文件中添加支持二级缓存。
3.在相应的查询方法中添加支持二级缓存。
哪些情况下适合缓存?
1.当我们需要频繁查询
2.数据正确性,准确性要求不高的业务中。
哪些情况不适合缓存?
1.增删改等操作不适合缓存。
2.对数据正确性,准确性要求高,例如:银行,股票等。。。