zoukankan      html  css  js  c++  java
  • Mybatis 缓存

    什么是缓存

      存在于内存中的临时数据

    为什么使用缓存

      减少和数据库的交互次数,提高执行效率

    什么样的数据能使用缓存, 什么样的数据不能使用

      适用缓存:

        经常查询 并且不经常改变的

        数据的正确与否 对最终结果影响不大的

      不适用缓存:

        经常改变的数据

        数据的正确结果与否对最终结果影响很大的

    Mybatis中的一级缓存和二级缓存:

    一级缓存

      他指的是Mybatis中SqlSession对象的缓存

      当我们执行查询后, 查询的结果会同时存入到SqlSession为我们提供的一块区域中

      该区域的结构是一个Map, 当我们再次查询同样的数据, mybatis会先去SqlSession中查询是否有, 有的话直接拿出来用

      一级缓存是 SqlSession 级别的缓存,

      当调用 SqlSession 的修改,添加,删除,commit(),close()等方法时,就会清空一级缓存。 

      sqlSession.clearCache();//此方法也可以清空缓存

      这样做的目的为了让缓存中存储的是最新的信息,避免脏读。 

    二级缓存:

      它指的是Mybatis中SqlSessionFactory对象的缓存, 由同一个SqlSessionFactory对象创建的SqlSession共享其缓存

       存放的是数据,而不是对象(不同于一级缓存)

      二级缓存的使用步骤:

        第一步:  让Mybatis框架支持二级缓存(在SqlMapConfig.xml中配置)  

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

          第二步: 让当前的映射文件支持二级缓存(在持久层接口对应的映射文件中配置)

    <!--开启user支持二级缓存-->
        <cache/>

         

          第三步: 让当前的操作支持二级缓存(在select标签中配置)

     <select id="findById" parameterType="INT" resultType="user" useCache="true">
            select * from user where id = #{uid}
    </select>

     

     

  • 相关阅读:
    selenium 浏览器操作
    selenium 4.0新特性及新旧api对比
    Selenium123介绍
    selenium元素定位(三) css定位方法
    selenium 安装和启动
    Selenium元素定位(一)30+1+5种方式
    软件开发经验收集
    spring+hibernate架构中Dao访问数据库的几种方法
    某励志书4
    PHP的Foreach
  • 原文地址:https://www.cnblogs.com/mkl7/p/10769063.html
Copyright © 2011-2022 走看看