zoukankan      html  css  js  c++  java
  • Mybatis内部模块之---缓存模块

    1.缓存的几类是Cache接口(基于Map实现的)

    2.真正实现缓存的基础类

    是PerpetualCache.java(这个是基于SqlSession的一级缓存的)

    3.缓存的其他装饰器

    :BlockIngCache.java,其中的成员变量Cache,就是为了增强PerpetualCache对象的;

    4.Mybatis中一级缓存和二级缓存讲解:

    4.1 一级缓存

          默认是开启的。要是需要关闭的话。需要配置 <select id="selectUserPosition1" flushCache="true">

          一级缓存存在于Sqlsession生命周期,是线程独享的(若Sqlsession关闭了,缓存也就失效了)

          任何的DDL语句,都会是缓存清除,

          一级缓存查询出来的对象,是同一个对象

    4.2 二级缓存

           如果一级缓存配置的是失效的话,二级缓存也是会查询数据库的;

           二级缓存是存在于SqlSessionFactory中的,可以理解为是跨越Sqlsession 的,是以namespace为单位的,不同的namespace互不影响;

           缓存在settings中是默认开启的cacheEnable = true,

           还需要在mapper.xml里面配置<cache>节点信息

    4.3 缓存的查询顺序 二级缓存-->一级缓存 ---> DB

    5.CacheKey缓存的key

    Mybatis中的缓存,不用string,而是用CacheKey,是因为影响缓存的因素很多:

    5.1 命名空间+id

    5.2 分页信息

    5.3 sql语句

    5.4 方法参数

     
  • 相关阅读:
    怎样解决:未找到路径“……”的控制器或该控制器未实现 IController?
    错误:org.springframework.jdbc.support.SQLErrorCodesFactory
    springbean的生命周期
    注解到处excel
    nio读取文件,输出文件
    AtomicReference
    唯一id
    hashmap1.7的死锁模拟
    数组模拟stack
    环形队列
  • 原文地址:https://www.cnblogs.com/lys-lyy/p/11505607.html
Copyright © 2011-2022 走看看