Mybatis 默认的一级缓存 与二级缓存

一级缓存
同一个session 调用多次查询相同的的主键获取数据 发起一次SQL语句

/**
	 * 1级缓存
	 * 同一个session 调用多次查询相同的的主键获取数据  发起一次SQL语句
	
	 */
	@Test
	public void text() {
		ActionSQL mapper = getSession().getMapper(ActionSQL.class);
		StuBean query = mapper.query("42"); 
		StuBean query1 = mapper.query("42"); 
		System.out.println(query==query1);//获取总条数
	}

二级缓存
同一个sqlSessionFactory 不同的session 必须要把session关闭后 才会把数据放在sqlSessionFactory中;
要是不关闭 会默认一级缓存

/**
	 *  * 2级缓存 
	 *  同一个sqlSessionFactory   不同的session  必须要把session关闭后  才会把数据放在sqlSessionFactory中;
	 *  要是不关闭 会默认一级缓存
	 *  
	 */
	@Test
	public void text1() {
		String resource = "config.xml";
		InputStream inputStream = ActionSQLShow.class.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		//获取两个session
		SqlSession openSession = sqlSessionFactory.openSession();
		SqlSession openSession1 = sqlSessionFactory.openSession();
		
		
		
		ActionSQL mapper = openSession.getMapper(ActionSQL.class);
		ActionSQL mapper1 = openSession1.getMapper(ActionSQL.class);
		StuBean query = mapper.query("42");
		//关闭第一个session
		openSession.close();
		StuBean query1 = mapper1.query("42"); 
		System.out.println(query==query1);//获取总条数
	}

并且要在XML中设定cache
eviction=“FIFO” //回收策略为先进先出
flushInterval=“60000” //自动刷新时间60s
size=“512” //最多缓存512个引用对象
readOnly=“true” //只读

 
		 
		 
		 
		

你可能感兴趣的:(Mybatis 默认的一级缓存 与二级缓存)