一级二级缓存

转载:https://blog.csdn.net/henuhaigang/article/details/70991174

一级缓存:

一级缓存就是停留在sqlsession级别的,它是用一个hashmap来保存的。也就是你使用比如:

<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="com.test.mapper.bo.CpPricemakingFactorKey" >
    select 
    <include refid="Base_Column_List" />
    from cp_pricemaking_factor
    where TENANT_ID = #{tenantId,jdbcType=VARCHAR}
      and PRICE_PRODUCT_TYPE = #{priceProductType,jdbcType=VARCHAR}
      and FACTOR_NAME = #{factorName,jdbcType=VARCHAR}
      and PRICE_PRODUCT_ID = #{priceProductId,jdbcType=VARCHAR}
  </select>

那么当我们使用同一个select的时候,他们会先从hashmap里找数据,如果没有再从数据库里查,但是一旦出现更新操作或者这个service方法技术,那么该sqlsession将会关闭,缓存也将会消失。

二级缓存

二级缓存在spring是默认关闭的,我们需要在配置文件里打开。他是mapper级别的,也就是说同一个result的多个sqlsession都可以共用这一个hashmap做的缓存。 

原文地址:https://www.cnblogs.com/DIVEY/p/11062712.html