MyBatis的缓存

为什么要使用缓存?
减少和数据的交互次数,提高执行效率

适用于缓存的场景:经常查询并且不经常改变的;数据的正确与否对最终结果影响不大的
不适应于缓存的场景:经常改变的数据;数据的正确与否对最终结果影响很大的。如:商品的库存,股市的牌价

MyBatis缓存

MyBatis的缓存分为一级缓存和二级缓存
一级缓存(默认的是支持一级缓存):指的是MyBatis中SqlSession对象的缓存,当我们执行查询之后,查询的结果会同时存入到SqlSession,SqlSession为我们提供一块区域中,该区域的结构是一个Map.当我们再次查询同样的数据,mybatis会先去sqlsession中查询是否有,有则直接获取。当sqlsession对象消失时,mybatis的一级缓存也就消失了。
二级缓存:它指的是MyBatis中SqlSessionFactory对象的缓存,由同一个SqlSessionFactory对象创建的SqlSession共享其缓存。

二级缓存的使用步骤:

  1. 让MyBatis框架支持二级缓存(在MyBatis-Config.xml中配置)
  2. 让当前的映射文件支持二级缓存(在UserDao.xml中配置)
  3. 让当前的操作支持二级缓存(在select标签中配置)
/**MyBatis-Config.xml**/
<settings>
	<!--全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存-->
	<setting name="cacheEnabled" value="true"/>
</settings>
/**UserDao.xml**/
<!--开启支持二级缓存-->
<cache></cache>
<select id="findById" parameterType="Integer" resultType="user" useCache="true"></select>

当使用二级缓存时,所缓存的类一定要实现java.io.Serializable接口,这种就可以使用序列化方式来保存对象
二级缓存存放的内容是数据,而不是对象

你可能感兴趣的:(SQL,框架)