概述
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>
<properties resource="conf.properties"/>
//映射顺序不能改变
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
...
</configuration>
二级缓存测试与一级测试类似,只需再获得一个SqlSession即可。(略)
最后
以上就是多情铃铛为你收集整理的Mybatis延迟加载的全部内容,希望文章能够帮你解决Mybatis延迟加载所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复