接上回: Mybatis入门实例(一),地址http://qiuqiu0034.iteye.com/blog/1157768
本帖用的数据库和上面帖子中的数据库相同
为了提高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 version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../bin/ehcache.xsd">
<!--
name:Cache的唯一标识
maxElementsInMemory:内存中最大缓存对象数
maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大
eternal:Element是否永久有效,一但设置了,timeout将不起作用
overflowToDisk:配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中
timeToIdleSeconds:设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大
timeToLiveSeconds:设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大
diskPersistent:是否缓存虚拟机重启期数据
diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒
diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区
memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)
-->
<defaultCache overflowToDisk="true" eternal="false"/>
<diskStore path="D:/cache" />
<!--
<cache name="zzugxy" overflowToDisk="true" eternal="false"
timeToIdleSeconds="300" timeToLiveSeconds="600" maxElementsInMemory="1000"
maxElementsOnDisk="10" diskPersistent="true" diskExpiryThreadIntervalSeconds="300"
diskSpoolBufferSizeMB="100" memoryStoreEvictionPolicy="LRU" />
-->
</ehcache>
该文件是ehcache的配置文件,上面的注释已经说得很清楚了,这里我用的是默认的配置
至此ehcache已经配置好了,然后只需要在你想要缓存的mapper配置文件里面加入以下内容,该查询语句得到的结果将会被缓存
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qiuqiu.dao.PersonDao">
<!-- 以下两个<cache>标签二选一,第一个可以输出日志,第二个不输出日志 -->
<cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
<!-- <cache type="org.mybatis.caches.ehcache.EhcacheCache"/> -->
<select id="selectUserById" parameterType="int" resultType="org.qiuqiu.vo.Person">
select * from person where id=#{id}
</select>
</mapper>
这样就对这个mapper里面的各种结果进行了缓存.程序中不需要修改任何地方.
这个过程不复杂,也没什么难度,不过Mybatis的官方说的也太含糊了.附件下面有,需要的各种jar包已经包含.
分享到:
相关推荐
SpringMVC、MyBatis和Ehcache的整合提供了一种优秀的解决方案,这三种技术分别处理了不同的层面:SpringMVC作为MVC框架负责控制层,MyBatis作为持久层框架简化了数据库操作,而Ehcache则作为缓存系统提高了数据访问...
最后,通过Spring的AOP支持,将Shiro的拦截器添加到Spring的全局拦截器链中,实现安全控制。 这样的整合可以创建一个健壮、高效的Web应用,具备良好的架构设计,易于扩展和维护。开发者可以专注于业务逻辑,而不用...
在进行Ehcache缓存开发时,首先需要搭建环境,包括导入ehcache的jar包、依赖的slf4j、ehcache配置文件以及log4j的配置文件。配置文件一般默认放置在classpath根目录下。 开发第一个缓存程序的步骤包括创建...
标题 "spring mybatis ehcache" 涉及到的是一个集成Spring、MyBatis和Ehcache的项目实例。这个项目结合了这三个重要的Java技术,为数据库操作提供了一个高效、可扩展的解决方案。 Spring是一个开源的Java应用框架,...
本实例主要涉及的技术栈包括SpringMVC、MyBatis、EhCache、FreeMarker以及Sitemesh,这些技术都是Java Web开发中的重要组件,各自承担着不同的职责。下面将分别详细介绍这些技术以及它们在整合中的作用。 1. ...
Ehcache支持内存和磁盘存储,以及分布式缓存,适用于高并发的Web应用。 4. **Apache Shiro**:Apache Shiro是一个强大的安全框架,主要用于身份验证(登录)、授权(权限控制)、会话管理和加密。在仓库管理系统中...
要使用EhCache,需要导入依赖包,并在Mapper.xml中指定使用EhCache缓存实现。然后需要导入配置文件ehcache.xml。 MyBatis缓存机制可以极大的提升查询效率,解决高并发系统的性能问题。但是需要正确地配置和使用缓存...
在本例中,我们使用 EHCache 作为 MyBatis 的二级缓存实现。 **Oracle** 是一个关系型数据库管理系统,广泛应用于企业级应用中。本文将介绍如何在 Oracle 10g 数据库中使用 MyBatis 和 EHCache 实现数据持久化,并...
在Java应用程序中,特别是那些基于Hibernate或MyBatis的持久层框架中,EHcache作为二级缓存工具,能够显著提升数据访问速度,减少数据库负载。 在Hibernate中,一级缓存是Session级别的,当同一个Session内的多次...
《基于SpringBoot+Layui的学生管理系统:整合Shiro安全框架与Ehcache缓存》 本项目是一个全面展示软件开发流程的实例,通过使用Java技术栈,特别是SpringBoot框架,结合前端Layui框架,构建了一个高效的学生管理...
MyBatis还支持与其他第三方缓存系统集成,例如Ehcache。只需要引入相应的依赖库和配置,然后在mapper.xml中指定自定义的缓存类型。 Ehcache配置示例: ```xml ``` 其中,`eviction`指定了缓存回收策略,如LRU、...
此外,Ehcache还支持事件监听,可以监控缓存的添加、移除和更新操作。 8. **扩展性**:Ehcache允许开发人员自定义缓存的实现,比如提供自定义的缓存策略、过期策略等,具有很高的灵活性。 9. **版本迭代**:虽然...
教程从51到60,主要围绕Mybatis的缓存机制展开,包括一级缓存、二级缓存以及如何整合第三方缓存如ehcache。 51至54集主要讲解了Mybatis的缓存概念和实践。首先,51集引入了缓存的概念,解释了缓存在数据库操作中的...
- 参照缓存:MyBatis提供了对第三方缓存的支持,例如Ehcache、Redis等。 MyBatis在设计时也考虑到了可扩展性,用户可以通过定义插件(plugins)来自定义MyBatis的核心行为。插件可以拦截方法调用并修改执行的行为,...
MyBatis是一个流行的Java持久层框架,它支持定制化SQL、存储过程以及...开发者也可以集成第三方缓存框架,如Ehcache,来提供分布式缓存支持。缓存机制可以显著提高应用的性能,特别是在数据库访问非常频繁的情况下。
- 在Spring中,`@Transactional`注解的使用会导致每次方法调用时创建新的SqlSession,即使是在同一个事务内,每次查询也会创建新的SqlSession实例,这样就绕过了MyBatis的一级缓存。 - 如果想要利用MyBatis的二级...
MyBatis支持一级缓存和二级缓存,以减少数据库访问次数,提升性能。 - **使用自定义缓存**:允许开发者自定义缓存实现。 - **参照缓存**:使用外部缓存如EHCache。 #### 动态SQL MyBatis支持动态SQL,允许根据...
在本压缩包中,你将找到MyBatis的安装包、依赖包、常用的配置文件,以及一些额外的工具和组件,如MyBatis Generator插件、EHcache缓存系统和测试数据脚本。以下将详细介绍这些内容及其在实际开发中的应用。 1. **...
整合EhCache,对Mybatis的二级缓存进行管理和对spring进行缓存管理 整合FastJson对指定http类型的数据进行转换 整合hibernate.validator校验器对controller接口参数进行校验 使用了springmvc统一异常处理 使用了...