美文网首页
Mybatis中使用二级缓存

Mybatis中使用二级缓存

作者: 落雪无尘V | 来源:发表于2020-09-24 13:06 被阅读0次

    一级缓存默认存在

    一级缓存是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,禁用二级缓存。

    相关文章

      网友评论

          本文标题:Mybatis中使用二级缓存

          本文链接:https://www.haomeiwen.com/subject/snmzyktx.html