mybatis的缓存机制

一级缓存:  

 mybatis默认有一级缓存,当两次使用的查询语句一样时,第一次查询的结果会写到缓存,第二次查询将直接去缓存取出数据,就不会去数据库进行查询,前提是在同一个SqlSession中,如果两次查询期间出现了操作语句(insert,delete,update),第一次缓存的数据将被清空.主要为了更新数据库,防止出现脏数据.但在mybatis和spring 整合后,如果没有使用事务,一级缓存是失效的,所以要么添加事务,要么使用二级缓存.

二级缓存:

二级缓存是mapper级别的缓存,多个SqlSerssion使用一个mapper的sql语句去操作数据库,得到的数据存放在二级缓存区域,作用域是mapper的同一个namespace,要使用二级缓存虚需要设置

<settings>

<setting name="cacheEnabled" value="true"/>

</setting>

为了尽量少造成脏数据,最好设置自动刷新,

在配置里面添加  flushInterval="10000",这里设置的是10秒刷新一次.

注意:使用一级二级缓存,pojo都要实现Serializable接口

原文地址:https://www.cnblogs.com/yeleia/p/7535575.html