Mybatis的缓存分为一级缓存和二级缓存
一级缓存
一级缓存是SqlSession上的缓存,默认开启,是一种内存型缓存,不要求实体类对象实现Serializable 接口。
1级缓存和sqlsession 相关,不同的seqsession 不会共享。
当有新增,删除,修改操作的时候会清空1级缓存。
有commit操作也会清空
二级缓存
二级缓存是以namesapce 为标记的缓存,可以是由一个sqlsessionFactory 创建的sqlsession 之间共享缓存数据,默认不开启。
二级缓存默认不开启,需要配置
1 开启sqlMapConfig.xml
<setting>
<setting name="cacheEnabled" value="true"/>
</setting>
2开启对应的mapper文件中缓存
<mapper namespace="com.mapper.EmployeeMapper">
<cache/>
</mapper>
3二级缓存未必完全使用内存,
有可能使用硬盘存储,缓存中存储的javabean对象必须实现序列化