mybatis之二级缓存(redis,ehcache)

前言:
本次是在mybatis与spring集成的基础上,加上二级缓存。
二级缓存分为两种,ehcache,redis。
mybatis的ehcache缓存可以参考一下hibernate之二级缓存
OK,本章会把两种缓存方式都给讲一遍,

Mybatis集成ehcache

ehcache缓存机制
ehcache的介绍

Ehcache 是现在最流行的纯Java开源缓存框架。
为什么要用?
配置简单
结构清晰
功能强大

mybatis之二级缓存(redis,ehcache)_第1张图片
mybatis之二级缓存(redis,ehcache)_第2张图片
它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序
特点:

够快
Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrency systems.
够简单
开发者提供的接口非常简单明了,从Ehcache的搭建到运用运行仅仅需要的是你宝贵的几分钟。其实很多开发者都不知道自己用在用Ehcache,Ehcache被广泛的运用于其他的开源项目
够袖珍
关于这点的特性,官方给了一个很可爱的名字small foot print ,一般Ehcache的发布版本不会到2M,V 2.2.3 才 668KB。
够轻量
核心程序仅仅依赖slf4j这一个包,没有之一!
好扩展
Ehcache提供了对大数据的内存和硬盘的存储,最近版本允许多实例、保存对象高灵活性、提供LRU、LFU、FIFO淘汰算法,基础属性支持热配置、支持的插件多
监听器
缓存管理器监听器 (CacheManagerListener)和 缓存监听器(CacheEvenListener),做一些统计或数据一致性广播挺好用的
分布式缓存
从Ehcache 1.2开始,支持高性能的分布式缓存,兼具灵活性和扩展性

mybatis整合ehcache

先把相关的依赖包给导入,当然为了大家方便我是直接放好了pom.xml的
当然如果要理解是多了那些文件的话,那就可以看一看“其他”依赖包下面
1.增加pom.xml所需依赖包




  4.0.0

  com.thf
  ssm
  1.0-SNAPSHOT
  war

  ssm Maven Webapp
  
  http://www.example.com

  
    UTF-8
    1.8
    1.8
    3.7.0

    
    
    5.0.2.RELEASE
    
    3.4.5
    
    5.1.44
    
    5.1.2
    
    1.3.1

    
    2.1.1
    2.4.3
    
    2.9.1
    3.2.0
    1.7.13
    
    4.12
    4.0.0
    1.18.2
    
    2.9.0
    1.7.1.RELEASE
    
    2.9.3

  



  
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-orm
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    

    
      org.springframework
      spring-aspects
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    

    
    
      org.mybatis
      mybatis
      ${mybatis.version}
    
    
    
      mysql
      mysql-connector-java
      ${mysql.version}
    
    
    
      com.github.pagehelper
      pagehelper
      ${pagehelper.version}
    
    
    
      org.mybatis
      mybatis-spring
      ${mybatis.spring.version}
    

    
    
      org.apache.commons
      commons-dbcp2
      ${commons.dbcp2.version}
    
    
      org.apache.commons
      commons-pool2
      ${commons.pool2.version}
    

    
    
    
    
    
      org.slf4j
      slf4j-api
      ${slf4j.version}
    
    
      org.slf4j
      jcl-over-slf4j
      ${slf4j.version}
      runtime
    

    
    
      org.apache.logging.log4j
      log4j-api
      ${log4j2.version}
    
    
      org.apache.logging.log4j
      log4j-core
      ${log4j2.version}
    

    
    
      org.apache.logging.log4j
      log4j-slf4j-impl
      ${log4j2.version}
    
    
    
      org.apache.logging.log4j
      log4j-web
      ${log4j2.version}
      runtime
    

    
    
      com.lmax
      disruptor
      ${log4j2.disruptor.version}
    

    
    
      junit
      junit
      ${junit.version}
      test
    
    
      javax.servlet
      javax.servlet-api
      ${servlet.version}
      provided
    
    
      org.projectlombok
      lombok
      ${lombok.version}
      provided
    

    
      org.springframework
      spring-context-support
      ${spring.version}
    

    
    
      org.mybatis.caches
      mybatis-ehcache
      1.1.0
    

    
    
      net.sf.ehcache
      ehcache
      2.10.0
    

    
      redis.clients
      jedis
      ${redis.version}
    
    
      org.springframework.data
      spring-data-redis
      ${redis.spring.version}
    


    
    
      com.fasterxml.jackson.core
      jackson-databind
      ${jackson.version}
    
    
      com.fasterxml.jackson.core
      jackson-core
      ${jackson.version}
    
    
      com.fasterxml.jackson.core
      jackson-annotations
      ${jackson.version}
    

  

  
    ssm
    
      
      
        src/main/java
        
          **/*.xml
        
      
      
      
        src/main/resources
        
          *.properties
          *.xml
        
      
    

    
      
        
          org.apache.maven.plugins
          maven-compiler-plugin
          ${maven.compiler.plugin.version}
          
            ${maven.compiler.source}
            ${maven.compiler.target}
            ${project.build.sourceEncoding}
          
        
        
          org.mybatis.generator
          mybatis-generator-maven-plugin
          1.3.2
          
            
            
              mysql
              mysql-connector-java
              ${mysql.version}
            
          
          
            true
          
        
      
    
  



2.增加ehcache.xml文件
直接创好xml文件,然后考入就行,不用修改



    
    
    
    


    
    
    
    
    
    
    
    
    
    
    
    

    
    
    
    


3.修改applicationContext.mybatis.xml文件





    
    
    
    
    

    
    
    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    
    
        
        
        
        
        
        

        
        
            
                
                true
                
                false
                
                true
            
        
        
        
            
                
                    
                        
                            helperDialect=mysql
                        
                    
                
            
        
    

    
    
    
        
        
        
        
    

    
        
    
    
    
    


然后我们是与mybatis整合的,所以在applicationContext-mybatis.xml中加入ehcache的配置
这是具体需要加入的配置

  
        
            
                
                true
                
                false
                
                true
            
        
        

mybatis之二级缓存(redis,ehcache)_第3张图片
4.为需要缓存的映射文件加入cache
然后我们的Mapper映射的xml中开启二级缓存,这里是BookMapper.xml
加在mapper标签下面第一个即可
mybatis之二级缓存(redis,ehcache)_第4张图片
然后我们还能改变useCache的值来开启和关闭缓存