1、前言

前面讲解了mybatis的一级、二级缓存。一级然并卵(spring整合后),二级还是有用的。我们现在来看看用ehcache来维护管理二级缓存。不要问我为什么,因为都这么用!!!java是框架语言,人家给你买个了车车,你硬是要自己写个赛跑的车,你认为呢(精神可嘉)??

2、配置ehcache

我们要先有个态度,前面我们已经有了mybatis的缓存的设置,知道其实质就是用map把数据存起来,这TM就是缓存。所以这些第三方框架也就是做了同样的事情,因为他们更专业。
2.1配置ehcache.xml
把文件放置到resource下面
<span style="font-size:10px;"><ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"><!--diskStore:缓存数据持久化的目录 地址  --><diskStore path="F:\ycydevelop\ehcache" /><defaultCache maxElementsInMemory="1000" maxElementsOnDisk="10000000"eternal="false" overflowToDisk="false" diskPersistent="true"timeToIdleSeconds="120"timeToLiveSeconds="120" diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"></defaultCache>
</ehcache></span>

2.2 配置具体的mapper

到具体的mapper.xml,就这样简单,就这么任性。我加入的是userMapper.xml。

    <!--打开mapper二级缓存开关--><cache type="org.mybatis.caches.ehcache.EhcacheCache"/>

如果你希望你本地mapper与全局的sqlconfig不一样的的时候,你已经可以设置缓存

    <!--打开mapper二级缓存开关--><cache type="org.mybatis.caches.ehcache.EhcacheCache"><property name="maxElementsInMemory" value="1000"/></cache>

2.3 测试二级缓存

依旧用以前测试 ,开启两个sqlsession

package com.ycy.mybatis.test;import com.ycy.mybatis.dao.OrdersCustomMapper;
import com.ycy.mybatis.dao.UserMapper;
import com.ycy.mybatis.dao.impl.UserMappermpl;
import com.ycy.mybatis.module.Orders;
import com.ycy.mybatis.module.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;
import java.util.List;/*** Created by Administrator on 2015/8/31 0031.*/
public class MybatisTest9 {private SqlSessionFactory sqlSessionFactory = null;@Beforepublic void  before() throws IOException {String resource="SqlMapConfig.xml";InputStream in = Resources.getResourceAsStream(resource);sqlSessionFactory= new SqlSessionFactoryBuilder().build(in);}//一级缓存测试@Testpublic  void findOrderAndDetail() throws Exception {SqlSession sqlSession=sqlSessionFactory.openSession();//第一次查询UserMapper userMapper=sqlSession.getMapper(UserMapper.class);User user= userMapper.getUserById(1);System.out.println(user.getUsername());//第二次查询(没有关闭sqlsession)User user2= userMapper.getUserById(1);System.out.println(user2.getUsername());}//二级缓存测试@Testpublic  void cache2() throws Exception {SqlSession sqlSession=sqlSessionFactory.openSession();SqlSession sqlSession2=sqlSessionFactory.openSession();UserMapper userMapper=sqlSession.getMapper(UserMapper.class);UserMapper userMapper2=sqlSession2.getMapper(UserMapper.class);//第一次查询User user= userMapper.getUserById(1);System.out.println(user.getUsername());sqlSession.close();//第二次查询()User user2= userMapper2.getUserById(1);System.out.println(user2.getUsername());sqlSession2.close();}}

测试二级缓存结果:看到0.5了吧,亲爱的小伙伴!!!

name:缓存名称。
       maxElementsInMemory:缓存最大个数。
       eternal:对象是否永久有效,一但设置了,timeout将不起作用。
       timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
       timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。
       overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。
       diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
       maxElementsOnDisk:硬盘最大缓存个数。
       diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
       diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
       memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
       clearOnFlush:内存数量最大时是否清除。

2、二级缓存应用场景

适用性:对查询频率高,变化频率低的数据建议使用二级缓存。例如我们的账单信息查询

局限性:mybatis二级缓存对细粒度的数据级别的缓存实现不好,例如我们的商品信息,广告信息,实时在更新。而二级缓存是针对mapper的,如果order里面更新    了,那么里面关于order的缓存就清空了哦。

mybatis学习教程中级(十)mybatis和ehcache缓存框架整合(重点)相关推荐

  1. [原创]mybatis中整合ehcache缓存框架的使用

    mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...

  2. [MyBatis学习笔记] 二、Mybatis基本操作及相关标签介绍

    [MyBatis学习笔记] 二.Mybatis基本操作及相关标签介绍 一.Mybatis简介 二.简单的CRUD操作 1.构建SqlSessionFactory (1)编辑mybatis-config ...

  3. SpringBoot集成Cache缓存(Ehcache缓存框架,注解方式)

    1.说明 Spring定义了CacheManager和Cache接口, 用来统一不同的缓存技术, 例如JCache,EhCache,Hazelcast,Guava,Redis等. 本文通过Spring ...

  4. MyBatis多参数传递之混合方式——MyBatis学习笔记之十五

    在本系列文章的<MyBatis多参数传递之Map方式示例>一文中,网友mashiguang提问如下的方法如何传递参数:public List findStudents(Map condit ...

  5. Spring+SpringMVC+MyBatis深入学习及搭建(十)——MyBatis逆向工程

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6973266.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(九)--My ...

  6. 查询缓存---Mybatis学习笔记(十)

    mybatis缓存介绍 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. 如下图,是mybatis一级缓存和二级缓存的区别图解: Mybatis一级缓存的作用域是同一个SqlSessio ...

  7. mybatis学习教程(二)初级的增、删、查、改

    引言 本文主要从一个基础实例,讲解Mybatis的实现,已经每一步的详细讲解.我会将项目共享在百度云盘,文章最后! 1.项目结构 2.项目配置  2.1 配置SqlMapConfig.xml 根据My ...

  8. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  9. mybatis学习:二、 Mybatis的Dao开发、mybatis-config.xml文件的详情

    3. Mybatis的Dao开发 ​ 使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法. 3.1 Mybatis的核心对象 SqlSessionFactor ...

最新文章

  1. 记一次Java多线程程序调试经历:HttpClient 死锁
  2. 十 Appium环境搭建(Windows版)
  3. 计算机系统结构sw指令集,《深入理解计算机系统》第三章学习笔记
  4. 关于JavaScript中Function Declaration与Function Expression的进一步说明
  5. Spring-Cloud中的网关
  6. iis下安装Memcache
  7. Robot Framework 教程 (3) - Resource及关键字 的使用
  8. php heredoc 用法
  9. 华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”
  10. postgresql存图片字段类型_C# 使用 PostgreSQL 存储图片二进制数据
  11. 【题解】CF#960 H-Santa's Gift
  12. SSM-Spring-04:Spring的DI的构造注入,P命名注入,和集合注入
  13. qq等级查询php源码,最新沉沦QQ等级代挂系源码统开源分享
  14. 软件设计过程--概要设计详细设计
  15. 腾讯云数据迁移工具解决方案:阿里云迁移到腾讯云
  16. java/php/net/python大学生就业管理系统设计
  17. 电脑打开控制面板不显示内容
  18. 2023湖南农业大学计算机考研信息汇总
  19. 开源项目搭建私有物联网智能家居接入天猫精灵控制
  20. 微信小程序跳转第三方页面

热门文章

  1. matlab 三维高程根据图片颜色给对应点赋予颜色
  2. hbase数据迁移到hive中
  3. PMP 第七章 项目成本管理
  4. 15款的视频处理软件免费下载
  5. 让数字保持在整数范围内
  6. springboot 使用的配置
  7. Spring AOP注解方式实现
  8. 红帽7 su命令与sudo服务
  9. [Usaco2010 Nov]Visiting Cows
  10. 打造自己Django博客日记