缓存
一级缓存属于会话级别(sqlSession)
sqlSession.close();会关闭会话
一级缓存默认开启,无法关闭
如果开启了二级缓存,先去二级缓存当中尝试命中
如果也无法命中,则尝试去一级缓存当中尝试命中
还不命中,再去数据库查询
缓存失效方式
查询之后进行增删改的行为,缓存将失效
-
强制清空缓存
sqlSession.clearCache();
开启二级缓存
mybaits.cfg.xml
<settings>
<!--解决数据库下划线如user_name命名而java的驼峰命名如userName不匹配的问题-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="logImpl" value="LOG4J"/>
<!--开启二级缓存-->
<setting name="cacheEnabled" value="true"/>
</settings>
mapper.xml
<!--开启二级缓存-->
<!--FIFO类似队列,先存的先清
flushInterval代表刷新间隔
size代表引用数目
readOnly是否只读-->
<cache
eviction="FIFO"
flushInterval="60000"
size="512"
readOnly="true"/>