MyBatis二级缓存

一、SqlMapConfig.xml中配置二级缓存开启

<settings>
  	<!-- 开启一级缓存 -->
  	<setting name="lazyLoadingEnabled" value="true"/>
  	<setting name="aggressiveLazyLoading" value="false"/>
  	
  	<!-- 开启二级缓存 -->
  	<setting name="cacheEnabled" value="true"/>
  </settings>

二、mapper.xml中开启二级缓存

<mapper namespace="com.leech.mybatis.first.mapper.UserMapper">

	<!-- 开启本mapper的namespace的二级缓存 -->
	<cache/>

三、测试用例

@Test
	public void testCacheTwo() throws Exception {
		SqlSession sqlSession1 = factory.openSession();
		SqlSession sqlSession2 = factory.openSession();
		SqlSession sqlSession3 = factory.openSession();
		
		UserMapper userMapper1 = sqlSession1.getMapper(UserMapper.class);
		User user1 = userMapper1.findUserById(1);
		System.out.println(user1);
		//这里执行关闭操作,将sqlsession中的数据写到二级缓存区域
		sqlSession1.close();
		
		//使用sqlSession3执行commit()操作
//		UserMapper userMapper3 = sqlSession3.getMapper(UserMapper.class);
//		User user  = userMapper3.findUserById(1);
//		user.setUsername("张明明");
//		userMapper3.updateUser(user);
//		//执行提交,清空UserMapper下边的二级缓存
//		sqlSession3.commit();
//		sqlSession3.close();
		
		UserMapper userMapper2 = sqlSession2.getMapper(UserMapper.class);
		User user2 = userMapper2.findUserById(1);
		System.out.println(user2);
		sqlSession2.close();
		
		
	}

四、二级缓存是跨sqlSession的

你可能感兴趣的:(MyBatis二级缓存)