转载:MyBatis的缓存配置(Cache)

转载:http://blog.csdn.net/woshisap/article/details/6825714

 

一、MyBatis的Cache配置
1、全局开关:默认是true,如果它配成false,其余各个Mapper XML文件配成支持cache也没用。
<settings>
         <setting name="cacheEnabled" value="true"/>
</settings>

2、各个Mapper XML文件,默认是不采用cache。在配置文件加一行就可以支持cache:
 

<cache />
如: 
<mapper namespace="com.xx.list">
           <cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
           <select>
           </select>
</mapper>


3、Mapper XML文件配置支持cache后,文件中所有的Mapper statement就支持了。此时要个别对待某条,需要:
// useCache=“false” 不支持 
<select id="inetAton" parameterType="string" resultType="integer" useCache=“false”> 
select inet_aton(#{name})
</select>

二、注意的几个细节
1、如果readOnly为false,此时要结果集对象是可序列化的。
<cache readOnly="false"/>

2、在SqlSession未关闭之前,如果对于同样条件进行重复查询,此时采用的是local session cache,而不是上面说的这些cache。

3、MyBatis缓存查询到的结果集对象,而非结果集数据,是将映射的PO对象集合缓存起来。

说意义不大是在于:
a、面对一定规模的数据量,内置的cache方式就派不上用场了;
b、对查询结果集做缓存并不是MyBatis框架擅长的,它专心做的应该是sql mapper。采用此框架的Application去构建缓存更合理,比如采用OSCache、Memcached啥的。

猜你喜欢

转载自xinjiatao.iteye.com/blog/2212406