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,一经查实,立即删除!

相关文章

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

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采用的都是…

服务器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等开…

myeclipse去掉js报错

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

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;在此…

终端不能联网_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;”……那…

电脑如何进入bios模式_华硕笔记本电脑开机自动进入BIOS界面怎么办?

最近很多人的华硕牌子笔记本有问题&#xff0c;说自己开机就直接进入BIOS了。对于这些小白来说&#xff0c;一脸懵逼啊&#xff0c;不知道怎么解决&#xff0c;其实大家也不要着急&#xff0c;坚哥来简单帮大家分析一下。第一、可能系统的文件被更改&#xff0c;从而导致无法启…

springmvc在controller和视图之间传递参数

从视图向controller传递值&#xff0c; controller <--- 视图 1&#xff09;简单类型&#xff0c;如int, String, 应在变量名前加RequestParam注解&#xff0c;例如&#xff1a; RequestMapping("hello3")public String hello3( RequestParam("name" …

苹果手机怎么清理听筒灰尘_怎么清理手机听筒的灰尘?

作为一个专业的强迫症从业者&#xff0c;我已经看不惯手机听筒的灰尘很久了&#xff0c;在经历无数次失败之后&#xff08;针&#xff0c;牙刷&#xff0c;牙签&#xff0c;吸尘器等等&#xff09;。我必须要来分享一个超级实用的方法清理手机听筒的灰尘。那就是&#xff0c;起…

linux mrtg 命令,linux服务器之流量监控(MRTG)

本系列文章原则&#xff1a;灰常详细&#xff0c;灰常简单&#xff0c;新手包学包会&#xff01;因其简单&#xff0c;故未涉及安全性方面的考虑呵&#xff01;本实验服务器为rhel-5-server-i386&#xff0c;客户端为windows xp。本实验所用软件包均在rhel-5-server-i386-dvd.i…

搭建网站必不可少的知识14

安全组配置 “操作”-“安全组配置” 单击“内网入方向”&#xff0c;“添加安全组规则”默认配置即可“确定”。在公网入方向和公网出方向都这样添加上。&#xff08;如果存在就先删除后在添加&#xff09;。现在应该能登录了。 输入密码&#xff0c;点击“确定” 登录后只有一…

8代cpu能跑linux,Intel公布6/7/8代桌面CPU打漏洞补丁性能结果:影响很小

今天&#xff0c;Intel执行副总裁数据、数据中心事业部总经理Navin Shenoy(孙纳颐)发布了第二篇性能测试文章&#xff0c;针对客户端也就是桌面平台用户在打上修复“Spectre”和“Meltdown”漏洞补丁之后的实际情况。对于大部分普通电脑用户来说&#xff0c;性能的影响并不显著…

Spring mvc interceptor配置拦截器

原文&#xff1a;http://blog.csdn.net/liyisong2008/article/details/42915715 -------------------------------------------------------------------------- xml代码&#xff1a; [java] view plaincopy <?xml version"1.0" encoding"UTF-8"?>…