上一篇:22-Mybatis缓存相关设置对一级缓存和二级缓存的影响https://blog.csdn.net/fsjwin/article/details/109685932

mybatis本身有缓存的实现,但是可以集成更专业的缓存框架比如:EHCache。

1. Mybatis的缓存接口

  1. org.apache.ibatis.cache.Cache 为mybatis的缓存接口。

  2. 加入依赖后的:

2. Mybatis集成EHCache步骤

2.1 导入依赖

参考整合官网:http://mybatis.org/ehcache-cache/

   <!--ehcache--><dependency><groupId>org.mybatis.caches</groupId><artifactId>mybatis-ehcache</artifactId><version>1.2.1</version></dependency>

2.2 配置文件ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"><diskStore path="D:\tmp\ehcache"/><!--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:内存数量最大时是否清除。--><defaultCachemaxElementsInMemory="10000"maxElementsOnDisk="10000000"eternal="false"overflowToDisk="true"timeToIdleSeconds="120"timeToLiveSeconds="120"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"/>
</ehcache>

2.3 配置使用EHCache StudentDao.xml

<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>

2.4 测试

  1. 测试
 @Testpublic void test26() {SqlSession sqlsession = MybatisUtil.getSqlsession();SqlSession sqlsession2 = MybatisUtil.getSqlsession();StudentDao studentDao = sqlsession.getMapper(StudentDao.class);StudentDao studentDao2 = sqlsession2.getMapper(StudentDao.class);//可以吧查询的条件放进去,也可以使用一个单独的类ParaObject类封装就可以了。List<StudentVo> studentList = studentDao.selectStudentResultType(1001);System.out.println("清理缓存");sqlsession.clearCache();sqlsession.close();//必须关掉,才会进入二级缓存中。List<StudentVo> studentList2 = studentDao2.selectStudentResultType(1001);}
  1. 确认使用了ehcache
  2. 本地缓存文件:
  3. 测试结果
PooledDataSource forcefully closed/removed all connections.
Cache Hit Ratio [com.yuhl.dao.StudentDao]: 0.0
Opening JDBC Connection
Created connection 471579726.
==>  Preparing: select id,name,email,age from student where id=?
==> Parameters: 1001(Integer)
<==    Columns: id, name, email, age
<==        Row: 1001, 张三, zhangsan@qq.com, 20
<==      Total: 1
清理缓存
Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@1c1bbc4e]
Returned connection 471579726 to pool.
Cache Hit Ratio [com.yuhl.dao.StudentDao]: 0.5

2.5 多个namespace使用EHCache


UserDao.xml 配置缓存饮用即可,只需要在一个地方配置,其他地方使用即可:
UserDao.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuhl.dao.UserDao"><!--引用其他地方的缓存配置--><cache-ref namespace="com.yuhl.dao.StudentDao"/><!-- <cache type="org.mybatis.caches.ehcache.EhcacheCache"/>--></mapper>

3.总结


下一篇:01-Springboot优点&缺点https://blog.csdn.net/fsjwin/article/details/109698409

23-Mybatis集成第三方缓存框架EHCache相关推荐

  1. springboot+mybatis集成自定义缓存ehcache用法笔记

    今天小编给大家整理了springboot+mybatis集成自定义缓存ehcache用法笔记,希望对大家能有所办帮助! 一.ehcache介绍 EhCache 是一个纯Java的进程内缓存管理框架,属 ...

  2. 三大缓存框架ehcache、memcache和redis的介绍

    三大缓存框架ehcache.memcache和redis的介绍 2016-04-12 架构说 4964 阅读 最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存 ...

  3. springMVC集成缓存框架Ehcache

    概述 Ehcache算是当前比较流行的缓存框架,使用缓存可以极大的缓解服务器和数据库的压力,提高访问效率,提高服务器的并发能力.接下来我们看怎么把缓存在spring mvc种使用起来. 详细 代码下载 ...

  4. MyBatis整合第三方缓存

    MyBatis缓存做的并不专业,用的是map,但是它给了我们一个接口Cache,我们通过实现这个接口,可以自定义缓存.本例子用的为ehcache ,Hibernate用的也是ehcache缓存技术. ...

  5. 关于Mybatis整合第三方缓存

    需要导入第三方相关的jar包:ehcache-core-2.6.8.jar.slf4j-api-1.6.1.jar.slf4j-log4j12-1.6.2.jar 还需要导入相关的适配文件到lib下: ...

  6. Mybatis集成二级缓存与同时使用缓存与事务存在的坑

    今天在看分布式事务的时候,突然收到app不能签到的消息,赶紧解决. 具体解决方法: 1.把执行错误的处理方法提取出来,作为测试方法 2.这个方法里面有两个插入语句,一条查询语句,一个更新语句,涉及到三 ...

  7. Java 开源分布式缓存框架Ehcache

    Ehcache 是一个Java实现的开源分布式缓存框架,EhCache 可以有效地减轻数据库的负载,可以让数据保存在不同服务器的内存中,在需要数据的时候可以快速存取.同时EhCache 扩展非常简单, ...

  8. Java的进程内缓存框架:EhCache (转)

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache缓存的特点: 1. 快速. 2. 简单. 3. 多种缓存 ...

  9. Spring Boot 集成 本地缓存Guava框架

    Spring Boot 作为主流微服务框架,拥有成熟的社区生态.市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC.缓存.消息队列.分库分表. ...

最新文章

  1. 教育学专硕考试科目计算机,2017考研:哪些专业的考试科目相同?
  2. [19/04/04-星期四] IO技术_CommonsIO(通用IO,别人造的轮子,FileUtils类 操作文件 IOUtilsl类 操作里边的内容 )...
  3. c++:栈的基本操作+实例:迷宫求解
  4. shell脚本安装mysql并安装一个小服务
  5. boost::system::windows_error相关的测试程序
  6. C#进阶系列——WebApi 接口测试工具:WebApiTestClient
  7. c++继承:共有、私有、保护继承
  8. node --- Missing write access to 解决
  9. 红橙Darren视频笔记 IOC注解框架 自己写个注解框架
  10. js匿名函数--转了
  11. ipad python编程软件_7款学习Python编程的iPhone/iPad应用
  12. LabVIEW虚拟示波器设计
  13. 深入理解Camera 基础知识点
  14. 【翻译】代码指针完整性——Code Pointer Integrity
  15. 3374——数据结构实验之查找二:平衡二叉树
  16. 探索:使用北鲲云平台利用Gaussian16进行HAT反应过渡态的寻找
  17. 基于SSM的小区物业管理系统JAVA【数据库设计、论文、源码、开题报告】
  18. wgc84 笛卡尔_从经纬度到笛卡尔坐标的转换
  19. faker和劫的图片_LOLS7faker劫出装顺序是怎么样
  20. Cocos Creator 下载图片动态替换纹理

热门文章

  1. rufus启动盘制作+linux18.04安装(一定仔细看文字)
  2. 【测试工具】QTP简介
  3. 我工作中不可或缺的宝贝们!
  4. Lock的基本使用及原理笔记
  5. 【ChatGPT高端玩法】ChatGPT生成Excel提取字符公式
  6. 哪种提词器软件好用?分享几种简单好用的提词器
  7. 利用JavaScript对HTML和CSS实现简单的动态操作
  8. 2022年博客之星排行榜 日榜 2022-12-31 博客之星总榜
  9. Babuk勒索病毒分析
  10. Tikhonov正则化