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字段没有数据,直到为空报错