老司机学习MyBatis之整合ehcache缓存框架

一、前言

MyBatis为我们提供了Cache接口,也提供了一些实现类,进入Cache接口源码,可以看到缓存对于MyBatis来说就是一个Map,比较简陋。但是大家都知道MyBatis是一个专注于持久层框架,与数据库打交道MyBatis是很专业的,但是对于缓存它就略显不足,即便如此MyBatis却提供了Cache接口的标准规范,谁做缓存专业,谁就来实现它,提供了很好的扩展性。本节我们将介绍了一下MyBatis与Ehcache框架的整合。

二、准备

Eclipse版本:Luna Service Release 1 (4.4.1)
MyBatis版本:org.mybatis.mybatis-3.2.8
JDK版本:1.7.0_79
Ehcache版本:ehcache-core-2.6.11.jar

mybatis-ehcache整合版本:mybatis-ehcache-1.1.0.jar

三、案例

参照《老司机学习MyBatis之简单入门HelloWorld》搭建Maven工程MyBatisIntegrateEhcache
搭建完工程后,需要往工程里面引入ehcache相关的jar包

引入核心包



	net.sf.ehcache
	ehcache-core
	2.6.11

引入mybatis-ehcache整合包,如果不知道怎么引入,可以参考官方文档,如下图:

老司机学习MyBatis之整合ehcache缓存框架_第1张图片

官方地址:http://www.mybatis.org/ehcache-cache/ 有兴趣可以看一下。

完整的Pom文件


	4.0.0
	com.queen.mybatis
	MyBatisIntegrateEhcache
	0.0.1-SNAPSHOT
	war
	
		
		
			junit
			junit
			4.10
			test
		
		
			org.mybatis
			mybatis
			3.2.8
		
		
		
			mysql
			mysql-connector-java
			5.1.32
		
		
			org.slf4j
			slf4j-log4j12
			1.6.4
		
		
			org.slf4j
			slf4j-log4j12
			1.6.4
		
		
		
			net.sf.ehcache
			ehcache-core
			2.6.11
		
		
		
			org.mybatis.caches
			mybatis-ehcache
			1.1.0
		
	

下面添加配置,都是按照官方文档来配置的

修改EmpMapper.xml文件,添加如下配置

老司机学习MyBatis之整合ehcache缓存框架_第2张图片

引入ehcache.xml文件,完整配置说明如下:



	
	
	

ehcache.xml放置路径

老司机学习MyBatis之整合ehcache缓存框架_第3张图片

如上,就是我们整合ehcache所需要的步骤,下面我们来简单的测试一下

@Test
public void testEhCache() throws IOException {
	SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
	SqlSession openSession = sqlSessionFactory.openSession();
	try {
		EmpMapper mapper = openSession.getMapper(EmpMapper.class);
		Emp emp01 = mapper.findEmpById(1);
		System.out.println(emp01.toString());
			
		Emp emp02 = mapper.findEmpById(1);
		System.out.println(emp02.toString());
		System.out.println(emp01 == emp02);
	} finally {
		openSession.close();
	}
}

测试结果如下

2017-08-19 11:27:18,090 [main] [com.queen.mybatis.mapper.EmpMapper.findEmpById]-[DEBUG] ==>  Preparing: select id,emp_name empName,emp_email empEmail, dept_id deptId from t_emp where id = ? 
2017-08-19 11:27:18,144 [main] [com.queen.mybatis.mapper.EmpMapper.findEmpById]-[DEBUG] ==> Parameters: 1(Integer)
2017-08-19 11:27:18,175 [main] [com.queen.mybatis.mapper.EmpMapper.findEmpById]-[DEBUG] <==      Total: 1
Emp [id=1, empName=queen3aasd21, [email protected], deptId=1]
2017-08-19 11:27:18,177 [main] [com.queen.mybatis.mapper.EmpMapper]-[DEBUG] Cache Hit Ratio [com.queen.mybatis.mapper.EmpMapper]: 0.0
Emp [id=1, empName=queen3aasd21, [email protected], deptId=1]
true
2017-08-19 11:27:18,178 [main] [net.sf.ehcache.store.disk.Segment]-[DEBUG] put added 0 on heap

控制台打印了一段SQL,第二次查询直接从缓存中获取。

从上面的打印结果,我们好像无法判断是否真的用到了ehcache缓存,但可以看一下缓存路径下是否有数据就知道了

找到该路径,可以确信使用了ehcache缓存

老司机学习MyBatis之整合ehcache缓存框架_第4张图片

四、总结

MyBatis与Ehcache整合步骤总结如下:

  • 引入第三方缓存包
  • 导入与第三方缓存整合的适配包
  • 在mapper.xml映射文件中引入即可
  • 引入ehcache.xml文件,设置相关属性配置

 

 

=======欢迎大家拍砖,小手一抖,多多点赞哟!=======

版权声明:本文为博主原创文章,允许转载,但转载必须标明出处。

 

你可能感兴趣的:(MyBatis教程,老司机学习MyBatis)