zoukankan      html  css  js  c++  java
  • mybatis的二级缓存的使用

    1.引入ehcache的jar包和mybatis整合ehcache的jar包;

            <!-- ehchache -->
            <dependency>
                <groupId>net.sf.ehcache</groupId>
                <artifactId>ehcache</artifactId>
                <version>2.8.3</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-ehcache</artifactId>
                <version>1.0.0</version>
            </dependency>

    2.配置ehcache.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache updateCheck="false" name="txswx-ehcache">
        <diskStore path="java.io.tmpdir"/>
        <!-- DefaultCache setting. -->
        <defaultCache maxEntriesLocalHeap="10000" eternal="true" timeToIdleSeconds="300" timeToLiveSeconds="600"
                      overflowToDisk="true" maxEntriesLocalDisk="100000"/>
    </ehcache>

    3.mybatis-config.xml中开启二级缓存:<setting name="cacheEnabled" value="true"/>;

    4.applicationContext.xml中配置ehcache的管理器;

    <!-- Cache配置 -->
        <cache:annotation-driven cache-manager="cacheManager"/>
        <bean id="ehCacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
              p:configLocation="/WEB-INF/conf/ehcache.xml"/>
        <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
              p:cacheManager-ref="ehCacheManagerFactory"/>

    5.*mapper.xml文件中配置缓存:

    <cache type="org.mybatis.caches.ehcache.LoggingEhcache" > 
        <property name="timeToIdleSeconds" value="3600"/><!--1 hour-->
        <property name="timeToLiveSeconds" value="3600"/><!--1 hour-->
        <property name="maxEntriesLocalHeap" value="1000"/>
        <property name="maxEntriesLocalDisk" value="10000000"/>
        <property name="memoryStoreEvictionPolicy" value="LRU"/>
    </cache>

    这样二级缓存就起作用了。
    不启用缓存:

    修改statementuseCachefalse,表示该statement不再进行二级缓存

    <select id="getCountByName" parameterType="java.util.Map" resultType="INTEGER" statementType="CALLABLE" useCache="false">

     执行更新后,不刷新二级缓存:

    <update id="updateUser" parameterType="cn.itcast.mybatis.po.User" flushCache="false">   
        update user set username = #{username},birthday = #{birthday},sex = #{sex} where id = #{id} 
      </update>
     
  • 相关阅读:
    康复计划#4 快速构造支配树的Lengauer-Tarjan算法
    康复计划#3 简单常用的几种计算自然数幂和的方法
    长链剖分随想
    康复计划#2 常用基础数论知识杂烩
    康复计划#1 再探后缀自动机&后缀树
    WC2017游记 & 能力残废康复计划
    Bubble Cup 8 finals I. Robots protection (575I)
    Bubble Cup 8 finals H. Bots (575H)
    Angular懒加载模块使用http拦截失效问题
    Git Commit提交规范
  • 原文地址:https://www.cnblogs.com/super-chao/p/9809606.html
Copyright © 2011-2022 走看看