Mybatis二级缓存的使用

Mybatis中二级缓存的使用

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.asiainfo.idsp.mapper.EventBankUserMapper">

  <cache flushInterval="86400000" readOnly="true"/> 

 <!-- 清空缓存 -->
  <select id="clearCache" resultType="java.lang.String" flushCache="true">
  select 1

  </select>

    //  关闭  <cache flushInterval="86400000" readOnly="false"/>
   // <select id="clearCache" resultType="java.lang.String" flushCache="true">
  //  select 1

   // </select>

  // 局部关闭二级缓存  <!-- 获取日期-->
    <select id="selectDay" parameterType="java.util.Map" useCache="false" resultType="java.lang.String">
       SELECT max(DAY_ID) from ST_BANK_USER_SCHOOL_DM_YMD where bank_id =  #{bankId}
    </select>

</mapper>

这种缓存的设置是对应整个mapper而言的;里面的每一个方法都会开启二级缓存

   二级缓存开启会导致一个问题,当第二次请求时,不会去查询数据库,会直接在缓存中去数据,如果此时对缓存的数据进行了增删改,那么多次请求后,会出现问题,例如:对list中的对象的name字段每次减一个长度,那么会出现请求多次后,name字段没有数据,直到为空报错

猜你喜欢

转载自blog.csdn.net/zhilinboke/article/details/80585719