mybatis的缓存机制
一级缓存:
mybatis默认有一级缓存,当两次使用的查询语句一样时,第一次查询的结果会写到缓存,第二次查询将直接去缓存取出数据,就不会去数据库进行查询,前提是在同一个SqlSession中,如果两次查询期间出现了操作语句(insert,delete,update),第一次缓存的数据将被清空.主要为了更新数据库,防止出现脏数据.但在mybatis和spring 整合后,如果没有使用事务,一级缓存是失效的,所以要么添加事务,要么使用二级缓存.
二级缓存:
二级缓存是mapper级别的缓存,多个SqlSerssion使用一个mapper的sql语句去操作数据库,得到的数据存放在二级缓存区域,作用域是mapper的同一个namespace,要使用二级缓存虚需要设置
<settings>
<setting name="cacheEnabled" value="true"/>
</setting>
为了尽量少造成脏数据,最好设置自动刷新,
在配置里面添加 flushInterval="10000",这里设置的是10秒刷新一次.