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 方法参数

     
  • 相关阅读:
    JUnit单元测试--IntelliJ IDEA
    sublime Error executing: /usr/bin/security dump-trust-settings -d
    git 撤销commit
    mockito 初识
    Lucene 初识
    从list中随机选出几个数,并按照原来的顺序排列
    JVM原理
    JVM crash at ForUtil.readBlock
    Scrum之初体验
    Mac安装Gradle eclipse安装buildship插件
  • 原文地址:https://www.cnblogs.com/lys-lyy/p/11505607.html
Copyright © 2011-2022 走看看