mybatis3 添加ehcache支持

为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方案,在此我们主要是做查询缓存,提高查询的效率.

 

在Mybatis的官网上把集成ehcache的文档下载下来看了看,说的太简单了,对于新手很难理解,而且里面说的也不是很清楚,经过一番折腾,终于将ehcache加入了.

 

官网上提供了一个MyBatis-ehcache.jar的包用于整合ehcache缓存,文档中还说明需要一个ehcache-core.jar的包,除了这两个包之外有几个包也是必须的,官方并没有说明,以下是需要加入的所有和ehcache相关的包:

1.ehcache-core-2.4.4.jar

2.mybatis-ehcache-1.0.0.jar

3.slf4j-api-1.6.1.jar

4.slf4j-log4j12-1.6.2.jar

 

除此之外还有mybatis的jar包,log4j,MySQL驱动,这些大家应该都知道.

 

将上述包加入项目之后,新建一个文件名,该文件名必须为ehcache.xml,放在类路径下面,内容如下

 

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xsi:noNamespaceSchemaLocation="../bin/ehcache.xsd">  
  4.     <!--  
  5.     name:Cache的唯一标识  
  6.     maxElementsInMemory:内存中最大缓存对象数  
  7.     maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大  
  8.     eternal:Element是否永久有效,一但设置了,timeout将不起作用  
  9.     overflowToDisk:配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中  
  10.     timeToIdleSeconds:设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大  
  11.     timeToLiveSeconds:设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大   
  12.     diskPersistent:是否缓存虚拟机重启期数据  
  13.     diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒  
  14.     diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区  
  15.      memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)
  16. 备注: 持久化到硬盘的路径由虚拟机参数"java.io.tmpdir"决定.  例如, 在windows中, 会在此路径下 C:\Documents and Settings\li\Local Settings\Temp  在linux中, 通常会在: /tmp 下 System.out.println(System.getProperty("java.io.tmpdir"));   
  17.     -->  
  18.     <defaultCache overflowToDisk="true" eternal="false"/>  
  19.     <diskStore path="D:/cache" />  
  20.     <!--  
  21.         <cache name="zzugxy" overflowToDisk="true" eternal="false"  
  22.         timeToIdleSeconds="300" timeToLiveSeconds="600" maxElementsInMemory="1000"  
  23.         maxElementsOnDisk="10" diskPersistent="true" diskExpiryThreadIntervalSeconds="300"  
  24.         diskSpoolBufferSizeMB="100" memoryStoreEvictionPolicy="LRU" />  
  25.     -->  
  26. </ehcache>  
[xml] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xsi:noNamespaceSchemaLocation="../bin/ehcache.xsd">  
  4.     <!--  
  5.     name:Cache的唯一标识  
  6.     maxElementsInMemory:内存中最大缓存对象数  
  7.     maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大  
  8.     eternal:Element是否永久有效,一但设置了,timeout将不起作用  
  9.     overflowToDisk:配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中  
  10.     timeToIdleSeconds:设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大  
  11.     timeToLiveSeconds:设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大   
  12.     diskPersistent:是否缓存虚拟机重启期数据  
  13.     diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒  
  14.     diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区  
  15.      memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)   
  16.     -->  
  17.     <defaultCache overflowToDisk="true" eternal="false"/>  
  18.     <diskStore path="D:/cache" />  
  19.     <!--  
  20.         <cache name="zzugxy" overflowToDisk="true" eternal="false"  
  21.         timeToIdleSeconds="300" timeToLiveSeconds="600" maxElementsInMemory="1000"  
  22.         maxElementsOnDisk="10" diskPersistent="true" diskExpiryThreadIntervalSeconds="300"  
  23.         diskSpoolBufferSizeMB="100" memoryStoreEvictionPolicy="LRU" />  
  24.     -->  
  25. </ehcache>  

 

该文件是ehcache的配置文件,上面的注释已经说得很清楚了,这里我用的是默认的配置

至此ehcache已经配置好了,然后只需要在你想要缓存的mapper配置文件里面加入以下内容,该查询语句得到的结果将会被缓存

 

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>   
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  3. <mapper namespace="com.qiuqiu.dao.PersonDao">  
  4.     <!-- 以下两个<cache>标签二选一,第一个可以输出日志,第二个不输出日志 -->  
  5.     <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>  
  6.     <!-- <cache type="org.mybatis.caches.ehcache.EhcacheCache"/> -->  
  7.       
  8.     <select id="selectUserById" parameterType="int" resultType="org.qiuqiu.vo.Person">  
  9.         select * from person where id=#{id}   
  10.     </select>  
  11. </mapper>  
[xml] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8" ?>   
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  3. <mapper namespace="com.qiuqiu.dao.PersonDao">  
  4.     <!-- 以下两个<cache>标签二选一,第一个可以输出日志,第二个不输出日志 -->  
  5.     <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>  
  6.     <!-- <cache type="org.mybatis.caches.ehcache.EhcacheCache"/> -->  
  7.       
  8.     <select id="selectUserById" parameterType="int" resultType="org.qiuqiu.vo.Person">  
  9.         select * from person where id=#{id}   
  10.     </select>  
  11. </mapper>  
 

这样就对这个mapper里面的各种结果进行了缓存.程序中不需要修改任何地方.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下延时1ms用什么函数,Linux下1ms分辨率定时器推荐方式

我需要一个在Linux下具有1ms分辨率的计时器刻度。它用于递增计时器值&#xff0c;该计时器值又用于查看是否应触发各种事件。由于glibc的要求&#xff0c;POSIXtimerfd_create不是一个选项。我尝试使用timer_create和timer_settimer&#xff0c;但从它们获得的最好结果是10ms分…

添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理

2019独角兽企业重金招聘Python工程师标准>>> 添加自定义监控项目 需求&#xff1a;监控某台web的80端口连接数&#xff0c;并出图两步&#xff1a;1&#xff09;zabbix监控中心创建监控项目&#xff1b;2&#xff09;针对该监控项目以图形展现对于第一步&#xff0c…

高通骁龙cpu排行_骁龙系列处理器性能分析,你的手机是什么处理器?

首先来看下目前使用比较多的骁龙处理器排行毫无疑问8系列最新出的骁龙855 Plus性能最强&#xff0c;刚刚发布的vivo NEX 3 5G版搭载的就是这款处理器。那么到底855和855 Plus有什么区别呢&#xff1f;一张图告诉大家从表格可以看出来&#xff0c;骁龙855和骁龙855CPU采用的都是…

Spring配置项context:annotation-config/解释说明

在基于主机方式配置Spring的配置文件中&#xff0c;你可能会见到<context:annotation-config/>这样一条配置&#xff0c;他的作用是式地向 Spring 容器注册 AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、 PersistenceAnnotationBeanPost…

linux服务器插上硬盘不能开机,Linux服务器添加新硬盘无法识别解决方法(无需重启)...

Linux服务器添加新硬盘无法识别解决方法(无需重启)发布时间&#xff1a;2018-08-24 19:45,浏览次数&#xff1a;711, 标签&#xff1a;Linux前言一般来说&#xff0c;当我们在服务上插入新的磁盘时&#xff0c;服务器是会对磁盘进行识别的。但是&#xff0c;有的时候服务器并没…

服务器cpu_服务器CPU与GPU协同运算加速三巨头竞争

来源&#xff1a;内容来自「MoneyDJ」&#xff0c;谢谢。根据DIGITIMES Research分析师翁书婷观察&#xff0c;高速运算需求下&#xff0c;服务器CPU与GPU协同运算趋势将加速NVLink、CCIX(Cache Coherent Interconnect for Accelerators)、CXL(Compute Express Link)与Gen-Z等开…

平面分割问题

同一个平面内有n&#xff08;n<500&#xff09;条直线&#xff0c;已知其中p&#xff08;n>p>2&#xff09;条直线相交于同一点。则这n条直线最多能将平面分割成多少个不同的区域&#xff1f; 分析&#xff1a;观察发现原有的p条线把平面分为2p个区域。为了能够划分出…

myeclipse去掉js报错

选中报错的js文件&#xff0c; 右键选择 MyEclipse-->Exclude From Validation &#xff1b; 然后继续右键执行MyEclipse-->Run Validation 即可

linux系统高级管理工具包,linux两大系统的包管理工具

linux系统分为两大阵营&#xff1a;1. redhat系统&#xff1a;包括Redhat、Centos、Fedora等2. debian系统&#xff1a;包括Debian、Ubuntu等RedHat 系列1 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”2 包管理工具 yum3 支持tar包Debian系列1 常见的安装包格式 deb…

python继承

为什么80%的码农都做不了架构师&#xff1f;>>> #继承 #衍生的类&#xff08;子类&#xff09;继承父类的方法和数据成员 #语法&#xff1a; # class 子类&#xff1a;父类 # {......} #子类继承父类&#xff0c;父类派生子类。父类又叫基类&#xff0c;子类又叫派生…

cpu散热器怎么拆_电脑CPU处理器与整机温度高 教你简单解决

炎炎夏日&#xff0c;电脑卡、慢、死机、关机多数是中央处理器(以下简称CPU)温度过高引起的。如果有上述感觉&#xff0c;那么你很可能就是这个病症。第一步、需要确定真正是否为温度高的问题&#xff0c;先不要着急拆机&#xff0c;软件测试&#xff0c;一般用百度搜索《鲁大师…

MyEclipse里运行Tomcat后,Console窗口里中文显示乱码

windows-preferences-搜索tomcat 修改为 UTF-8 或 gbk

linux查看raid情况工具,使用MegaCli工具查看Raid磁盘阵列状态

转载自&#xff1a;http://home.51.com/chenjianghui1987/diary/item/10051836.html文章本身我不做过多修改了&#xff0c;在这里我就把自己在安装时候碰到的难点跟大家提下。1.何处下载&#xff1f;首先&#xff0c;根据文章中的路径已经下载不到相应的文件了&#xff0c;在此…

Myeclipse 更改web项目的访问名

第一步&#xff1a;在要修改的项目名称上右击选择最下面一列的”prepertise“&#xff08;属性&#xff09;&#xff0c;进入属性设置界面。 第二步&#xff1a;找到左侧菜单栏的”Myeclipse“中的web项&#xff0c;设置”Web Context -root“值&#xff0c;之后点击”ok“按钮…

年底送书活动:送出6本技术书籍,价值372元!

年底了 为了回馈公众号粉丝 特别赠送6本新书 它就是&#xff01;&#xff01;&#xff01; <RabbitMQ实战指南> 最近在做消息队列 正好看到此书 收益良多 正好推荐给大家 感谢原书作者支持3本 另外~ 本人自费购买了3本 一共6本 免费送给大家 总价值&#xff1a;62*6&…

终端不能联网_5G和物联网DDA的关系

多年以来&#xff0c;物联网一直是一个大家耳熟能详又不知为何物的东西&#xff0c;而物联网的定义也随着技术的进步和应用场景的改变而不断的变化和演化。以前&#xff0c;物联网WLAN物联网(就是WiFi、蓝牙、ZigBee...)。而如今物联网WLAN物联网蜂窝物联网(2/3/4G、NB、LoRa、…

linux磁盘fio压力测试,fio进行磁盘压力测试

fio可以用来测试磁盘IO常用的参数如下&#xff1a;filename/dev/emcpowerb 支持文件系统或者裸设备&#xff0c;-filename/dev/sda2或-filename/dev/sdbdirect1 测试过程绕过机器自带的buffer&#xff0c;使测试结果更真实rwrandwread 测试随机读的…

SpringMVC 实例 --非注解【过时的,留作回忆】

练习项目&#xff1a;test SpringMVC 实例 --非注解&#xff0c;只用于学习理解。到了spring 3.0以后或许部分东西已经过时了&#xff0c;在实际工作中并不一定好用。 但对于理解SpringMVC的实现方式很有帮助&#xff0c;在以后使用注解时&#xff0c;会明白是怎么个来龙去脉&a…

云场景实践研究第27期:袋鼠云

更多云场景实践研究案例&#xff0c;点击这里&#xff1a;【云场景实践研究合集】联合不是简单的加法&#xff0c;而是无限的生态&#xff0c;谁会是下一个独角兽 随着网站论坛粉丝数高涨&#xff0c;原有系统架构和服务器性能已无法满足热情高涨的粉丝需求。同时&#xff0c;网…

怎么在电脑上看磁盘分配单元的大小_电脑磁盘到底该不该分区?怎么分区?

“哥&#xff0c;在吗&#xff1f;在你家新买的adolbook14 2020怎么只有一个C盘啊?”“电脑磁盘怎么重新分区啊&#xff1f;在线等&#xff01;急&#xff01;”“本电脑小白可太骄傲了&#xff0c;我居然自己给电脑磁盘分区了&#xff0c;一通操作猛如虎&#xff01;”……那…