<mapper namespace="src.main.domain.EqMapper">
<cache
eviction="FIFO"
size="512"
readOnly="true"/>
<select id="getStoreIdAndEqId" resultType="String" flushCache="false" useCache="true">
select count(author) from blog
</select>
<select id="getWholeData" resultType="java.util.LinkedHashMap" flushCache="false" useCache="true">
select * from blog
</select>
</mapper>
场景:第一次我调用getWholeData
方法,它一次带来完整的数据。例如,那时select count(author) from blog
的结果在真实DB中是20。然后我在10分钟后调用getStoreIdAndEqId
然后我希望得到数据为20,因为我已经第一次加载了整个数据而没有发生,而getWholeData
有20条记录getStoreIdAndEqId
返回新数据当时可能是25,无论它是否仍然在缓存之后。当我在第一个地方调用getStoreIdAndEqId
它不应该查询数据库时它是不可能的,它应该从getWholeData
缓存查询并返回20而不是新的25。