缓存技术是一种“以空间换时间”的设计理念,是利用内存空 间资源来提高数据检索速度的有效手段之一。
MyBatis包含一个非常强大的查询缓存特性,可以非常方便地配 置和定制。
mybaits提供一级缓存,和二级缓存。
一级缓存
mybatis默认支持一级缓存,不需要在配置文件去配置!
测试:
public static void main(String[] args) throws IOException {
InputStream inputStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(com.xjx.mapper.UserMapper.class);
/**
* 缓存
*/
User user1 = userMapper.selectUserById(2);
System.out.println(user1.toString());
User user2 = userMapper.selectUserById(2);
System.out.println(user2.toString());
session.close();
SqlSession session2 = factory.openSession();
UserMapper userMapper2 = session2.getMapper(com.xjx.mapper.UserMapper.class);
User user3 = userMapper2.selectUserById(2);
System.out.println(user3.toString());
}
二级缓存
mybaits的二级缓存是mapper范围级别
要在 mybatis-config.xml设置二级缓存的开关,还要在具体的 mapper.xml中开启二级缓存。
使用上面的测试代码
查询结果:即使session中间有关闭,但是还是只执行一次查询