我是靠谱客的博主 多情铃铛,最近开发中收集的这篇文章主要介绍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>
	<properties resource="conf.properties"/>
	//映射顺序不能改变
	<settings>
		<setting name="cacheEnabled" value="true"/>
	</settings>
	...
</configuration>

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

最后

以上就是多情铃铛为你收集整理的Mybatis延迟加载的全部内容,希望文章能够帮你解决Mybatis延迟加载所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部