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>

     

     

  • 相关阅读:
    nginx 09-Nginx部署https
    nginx 08-Nginx的rewrite规则
    nginx 07-Nginx缓存服务
    nginx 06-Nginx代理服务
    LBP及纹理表达 转自http://blog.sina.com.cn/s/blog_ba9d7d9901018k4v.html
    双边滤波与引导滤波
    层次聚类,转自http://blog.sina.com.cn/s/blog_62f3c4ef01014uhe.html
    有用的matlab函数(不断加入)
    显著目标检测思路
    matlab曲线、图形绘制方法(不断更新)
  • 原文地址:https://www.cnblogs.com/mkl7/p/10769063.html
Copyright © 2011-2022 走看看