微服务 教程
1085个小节阅读:195.9k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
MyBatis一级缓存也叫本地缓存。SqlSession对象中包含一个Executor对象,Executor对象中包含一个PerpetualCache对象,在该对象存放一级缓存数据。
由于一级缓存是在SqlSession对象中,所以只有使用同一个SqlSession对象操作数据库时才能共享一级缓存。
MyBatis的一级缓存是默认开启的,不需要任何的配置。
xxxxxxxxxx
public void testCache1() throws IOException {
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(is);
SqlSession session = factory.openSession();
// 使用同一个SqlSession查询
UserMapper mapper1 = session.getMapper(UserMapper.class);
UserMapper mapper2 = session.getMapper(UserMapper.class);
User user1 = mapper1.findById(1);
System.out.println(user1.hashCode());
System.out.println("-------------------------------------------");
User user2 = mapper2.findById(1);
System.out.println(user2.hashCode());
}
public void testCache2() throws IOException {
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(is);
SqlSession session1 = factory.openSession();
SqlSession session2 = factory.openSession();
// 使用不同的SqlSession查询
UserMapper mapper1 = session1.getMapper(UserMapper.class);
UserMapper mapper2 = session2.getMapper(UserMapper.class);
User user1 = mapper1.findById(1);
System.out.println(user1.hashCode());
System.out.println("-------------------------------------------");
User user2 = mapper2.findById(1);
System.out.println(user2.hashCode());
}
1.MyBatis一级缓存存在于对象中:
A Mapper
B SqlSession
C SqlSessionFactory
D SqlSessionFactoryBuilder
2. 关于MyBatis一级缓存,以下说法正确的是:
A 一级缓存也叫全局缓存。
B 不是同一个SqlSession对象操作数据库,也能共享一级缓存。
C 一级缓存是默认开启的,不需要任何配置。
D 一级缓存需要手动开启。
1=>B 2=>C