转载: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做的缓存。