Mybatis延迟加载

1.延迟加载,也懒加载,推迟对关联对象的select查询,可以有效的减少数据库压力。

一级缓存:
Mybatis一级缓存的作用于是同一个SqlSession,当使用同一个SqlSession来执行多次相同的sql语句时,会在第一次从数据库查询到数据存到缓存(内存),后面的再次查询会直接读取内存中的数据,从而提高查询效率。

测试:
1.配置完mybatis
2.当第一次读取数据,然后使程序沉睡10秒,在此期间,对数据库表中的 数据进行修改,睡眠结束后,第二次查询结果不变,仍旧是第一次查询的结果,Mybaties默认开启一级缓存。

@Test
	public void myTest1(){
		//基本配置
		InputStream is = Class.class.getResourceAsStream("/mybatis-config.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
		SqlSession sqlSession = sqlSessionFactory.openSession(true);
		UserMapper um = sqlSession.getMapper(UserMapper.class);
		//查询1条数据
		User user = um.queryById(1);
		System.out.println(user);
		
		try {
			Thread.sleep(10000);
		} catch (Exception e) {
			e.printStackTrace();
		}
		//再次查询
		user = um.queryById(1);
		System.out.println(user);
	}

二级缓存:
Mybatis二级缓存是多个SqlSession共享,其作用域是mapper的同一个namespace,多个SqlSession执行相同的sql,会在第一个执行完后,将数据存入缓存(内存),其余的直接读取缓存,二级缓存默认没有开启,需要在setting全局参数配置中开启二级缓存。

1.开启二级缓存

configuration>
	
	//映射顺序不能改变
	
		
	
	...

二级缓存测试与一级测试类似,只需再获得一个SqlSession即可。(略)

你可能感兴趣的:(框架)