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” //只读

 <mapper namespace="lesson_mybatis_redis.ActionSQL">
		 
		 <!-- eviction="FIFO"  //回收策略为先进先出
     	 flushInterval="60000" //自动刷新时间60s
      	size=“512” //最多缓存512个引用对象 readOnly="true"  //只读
		  -->
		 <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
		<select id="query" resultType="lesson_mybatis_redis.StuBean"> 
				SELECT * FROM student  where id = #{0}
	 	</select>
</mapper>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值