当前位置:   article > 正文

Mybatis缓存机制-一级缓存SqlSession_sqlsession一级缓存

sqlsession一级缓存

目录

作用

分级缓存

测试一级缓存

缓存失效:


作用

减少与数据库的交互次数,减少系统开销,提高系统效率。经常使用的数据才可以进入缓存

分级缓存

mybatis缓存默认分为两级 一级缓存sqlsession(默认开启) 和二级缓存(需要手动开启)

一级缓存也是本地缓存,在与数据库的一次会话当中,从数据库中查询到的数据会被放入缓存中(以对象形式放入,二级缓存是单纯的存储了数据),再次访问相同的数据的时候不需要再次链接数据库。

测试一级缓存

  1. public class UserTest {
  2. private InputStream in = null;
  3. private SqlSession session = null;
  4. private UserDao mapper = null;
  5. /**
  6. * 测试查询所有的方法
  7. */
  8. @Test
  9. public void findById() throws IOException {
  10. //加载主配置文件,目的是为了构建SqlSessionFactory对象
  11. in = Resources.getResourceAsStream("SqlMapConfig.xml");
  12. //创建SqlSessionFactory对象
  13. SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
  14. //通过SqlSessionFactory工厂对象创建SqlSesssion对象
  15. session = factory.openSession();
  16. //通过Session创建UserDao接口代理对象
  17. mapper = session.getMapper(UserDao.class);
  18. User user1 = mapper.findById(1);
  19. System.out.println(user1.toString());
  20. System.out.println("-----------------");
  21. User user2 = mapper.findById(1);
  22. System.out.println(user2.toString());
  23. System.out.println(user1 == user2);
  24. //释放资源
  25. session.close();
  26. in.close();
  27. }
  28. }

两者比较的结果是true,而且只执行了一次sql语句 证明在一级缓存下,再次访问相同数据时访问缓存中的数据,不需要再次访问数据库

缓存失效:

首先访问的不是一组数据的时候缓存是用不了的

第二:当在查询中间掺杂数据库的增删改操作而导致数据库数据产生变化时,缓存失效

第三:生成两个sqlsession 对象和 两个代理对象时,缓存失效

第四:session.clearCache()手动清楚缓存后缓存失效

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/159839
推荐阅读
相关标签
  

闽ICP备14008679号