一级缓存默认存在
一级缓存是SqlSession范围的缓存,当调用SqlSession的修改,添加,删除,commit(),close()等方法时,就会清空一级缓存
二级缓存是mapper映射级别的缓存
多个SqlSession去操作同一个Mapper映射的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的
二级缓存的开启与关闭
第一步:在SqlMapConfig.xml文件开启二级缓存
<settings>
<!--开启二级缓存的支持-->
<settingname="cacheEnabled"value="true"/>
</settings>
因为cacheEnabled的取值默认就为true,所以这一步可以省略不配置。
为true代表开启二级缓存;
为false代表不开启二级缓存。
第二步:配置相关的Mapper映射文件<cache>标签表示当前这个mapper映射将使用二级缓存,区分的标准就看mapper的namespace值。
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.dao.IUserDao">
<!--开启二级缓存的支持-->
<cache></cache>
</mapper>
第三步:配置statement上面的useCache属性
<selectid="findById"resultType="user"parameterType="int"useCache="true">
select * from user where id = #{uid}
</select>
将UserDao.xml映射文件中的<select>标签中设置useCache=”true”
代表当前这个statement要使用二级缓存,如果不使用二级缓存可以设置为false。
注意:针对每次查询都需要最新的数据sql,要设置成useCache=false,禁用二级缓存。
网友评论