Mapper@Test单元测试01

本文详细介绍了如何进行MyBatis的二级缓存测试,包括在SqlMapConfig.xml中开启二级缓存,禁止二级缓存的配置,以及MyBatis与Ehcache的整合步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.开启二级缓存

config/SqlMapConfig.xml

<span style="white-space:pre">	</span><settings>
		<setting name="lazyLoadingEnabled" value="true" />
		<setting name="aggressiveLazyLoading" value="false" />
		<strong><!-- 开启二级缓存 -->
		<setting name="cacheEnabled" value="true" /></strong>
	</settings>


test单元测试

	// 二级缓存测试
	@Test
	public void testCache1() throws Exception{
		SqlSession sqlSession1 = sqlSessionFactory.openSession();
		SqlSession sqlSession2 = sqlSessionFactory.openSession();
		SqlSession sqlSession3 = sqlSessionFactory.openSession();
		
		UserMapper userMapper1 = sqlSession1.getMapper(UserMapper.class);
		// 第一次发起请求
		User user1 = userMapper1.findUserById(1);
		System.out.println(user1);
		
		sqlSession1.close();
		
		// 使用sqlSession3执行commit()操作
		UserMapper userMapper3 = sqlSession3.getMapper(UserMapper.class);
		User user = userMapper3.findUserById(1);
		user.setUsername("张明明");
		userMapper3.updateUser(user);
		// 执行提交,清空二级缓存
		sqlSession3.commit();
		sqlSession3.close();
		
		// 第二次发起请求
		UserMapper userMapper2 = sqlSession2.getMapper(UserMapper.class);
		User user2 = userMapper2.findUserById(1);
		System.out.println(user2);
		
		sqlSession2.close();
	}


2.开启禁止二级缓存

src/mapper包UserMapper.xml配置文件

	<!-- R  根据id查询一条记录结果 -->
	<select id="findUserById" parameterType="int" resultType="user" <strong><span style="color:#ff0000;">useCache="false"</span></strong>>
		SELECT * FROM USER WHERE id=#{value}
	</select>



test单元测试

	// 二级缓存测试
	@Test
	public void testCache1() throws Exception{
		SqlSession sqlSession1 = sqlSessionFactory.openSession();
		SqlSession sqlSession2 = sqlSessionFactory.openSession();
		SqlSession sqlSession3 = sqlSessionFactory.openSession();
		
		UserMapper userMapper1 = sqlSession1.getMapper(UserMapper.class);
		// 第一次发起请求
		User user1 = userMapper1.findUserById(1);
		System.out.println(user1);
		
		sqlSession1.close();
		
//		// 使用sqlSession3执行commit()操作
//		UserMapper userMapper3 = sqlSession3.getMapper(UserMapper.class);
//		User user = userMapper3.findUserById(1);
//		user.setUsername("张明明");
//		userMapper3.updateUser(user);
//		// 执行提交,清空二级缓存
//		sqlSession3.commit();
//		sqlSession3.close();
		
		// 第二次发起请求
		UserMapper userMapper2 = sqlSession2.getMapper(UserMapper.class);
		User user2 = userMapper2.findUserById(1);
		System.out.println(user2);
		
		sqlSession2.close();
	}


3.mybatis整合ehcache

src/mapper包UserMapper.xml

	<!-- 开启本mapper的namespace下的二缓存 -->
	<cache type="org.mybatis.caches.ehcache.EhcacheCache" />

config/ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
	<diskStore path="F:\develop\ehcache" />  一种方法:如果控制台报错,把这个注释。  另一种方法:先删除<span style="font-weight: bold; color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif;">useCache="false"</span><span style="font-family: Arial, Helvetica, sans-serif;">,也可以不用了注释这个。</span><span style="font-weight: bold; color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif;">
</span>

	<defaultCache 
		maxElementsInMemory="1000" 
		maxElementsOnDisk="10000000"
		eternal="false" 
		overflowToDisk="false" 
		timeToIdleSeconds="120"
		timeToLiveSeconds="120" 
		diskExpiryThreadIntervalSeconds="120"
		memoryStoreEvictionPolicy="LRU">
	</defaultCache>
</ehcache>
src/mapper包UserMapper.xml

	<!-- R  根据id查询一条记录结果 -->
	<select id="findUserById" parameterType="int" resultType="user" <span style="color:#ff0000;"><strong>useCache="false"</strong></span>>  如果控制台禁止开启二级缓存,就删除红色的。
		SELECT * FROM USER WHERE id=#{value}
	</select>



4

5

6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值