1.懒加载:需要多表查询的时候一般使用分步的单表查询,因为会比关联查询效率高,而分步单表查询的时候有时候不需要某些表的关联信息时,为了优化就可以配置懒加载,(通常将懒加载设置为false,也就是不懒加载,立即抓取)。

2.一级缓存:sqlsession级缓存(默认开启的缓存)

特点:在同一个sqlSession连接下,对同一个sql语句进行查询时,第一次需要执行查询语句,而以后再需要进行相同的查询时,不需要再次进行sql语句查询的操作。在两个相同sql查询语句期间,如果对该表进行增删改的操作(java语句操作),那么该表缓存会清空。(需要注意是同一个连接对同一条sql语句进行查询,比如查询id为10的用户信息,在不关闭连接且用相同SqlSession连接再次进行查询id为10的用户信息的时候,不需要从数据库中查询,可以直接从连接中得到结果,此时称为一级缓存)。

3.二级缓存:数据缓存在代理类mapper中,多个sqlSession共享。默认关闭的。需要配置。

使用的缓存框架 ehcache. 步骤:
1. 引入jar包
2. 把ehcache.xml 缓存的配置文件加载到类路径的根目录下 src/

缓存搜索顺序:
每次查询先看是否开启了二级缓存,如果开启了二级缓存则直接从二级缓存的数据结构中取缓存数据,如果二级缓存中没有数据,再从一级缓存中找,如果一级缓存也没有,则在数据库中查询,并保存到相应级别的缓存中。

二级缓存:配置好二级缓存的文件后,一级缓存先进行连接,使用sqlSession1进行连接,查询id为10的用户信息后,使用sqlSession1.close();关闭连接后,将在配置好的文件位置生成缓存文件,即二级缓存,此时再使用sqlSession2连接,再次查询id为10的用户信息时,直接从二级缓存的数据中取出数据,不需要再次从数据库中查询,此时称为二级缓存。

@Testpublic void testUserOrder()throws IOException{SqlSession sqlSession1 = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();UserDao5 proxy = sqlSession1.getMapper(UserDao5.class);System.out.println("一一一");User user = proxy.getUserById(1);System.out.println(user);System.out.println("二二二");User user2 = proxy.getUserById(1);System.out.println(user2);//直接从一级缓存中获取数据,不需要从数据库中查询sqlSession1.close();//关闭连接后,变为二级缓存,存到相应的src路径下SqlSession sqlSession2 = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();UserDao5 proxy2 = sqlSession2.getMapper(UserDao5.class);System.out.println("三三三");User user3 = proxy2.getUserById(1);System.out.println(user3);//再次进行查询的时候从二级缓存中获取数据,不需要从数据库中查询sqlSession2.close();}

mybatis的懒加载和缓存相关推荐

  1. mybatis懒加载与缓存

    在接触mybatis时我们会学到接触小知识,关于懒加载的一些知识点还是需要亲自去测试一下才能加深理解; mybatis懒加载与缓存 mybatis对缓存的支持 mybatis一级缓存 mybatis的 ...

  2. lombok中的@Data注解与MyBatis的懒加载机制冲突解决

    使用@Data注解与mybatis的懒加载机制实现一对一关系查询时,发现怎么配置都无效,就是一下都查出来了,根本没有懒加载 1.application.yml配置文件配置如下: # mybatis 配 ...

  3. free mybatis 不生效_关于 Mybatis 设置懒加载无效的问题

    看了 mybatis 的教程,讲到关于mybatis 的懒加载的设置: 只需要在 mybatis 的配置文件中设置两个属性就可以了: 但是经过测试之后发现是无效的,经过一番折腾,发现是因为我在测试的时 ...

  4. mybatis 的懒加载原理

    断断续续的阅读 mybatis 的源码有好几个月了,想把自己了解到的一些东西与大家分享.今天给大家分享一下 mybatis 的懒加载原理. mybatis 的懒加载过程挺复杂的,涉及到的东西有很多,包 ...

  5. Mybatis学习第四天:Mybatis延迟加载懒加载,一级缓存,二级缓存,注解开发

    文章目录 Mybatis中的延迟加载 一对一进行延迟加载 一对多的延迟加载 缓存机制: 一级缓存 二级缓存 注解开发 注解开发--单表的增删改查 注解开发--建立表与实体类的对应关系 注解开发--多表 ...

  6. MyBatis的懒加载(延迟加载)

    什么是懒加载 所谓懒加载就是按需加载. 例如: 对象模型就是一个订单中持有一个对用户的引用. 当查询订单信息时,暂时不加载用户信息.就延迟加载(懒加载). 什么情况下才能使用懒加载呢? 上面的情况是无 ...

  7. mybatis ------ 懒加载(八)

    分析: 1.需求:查询订单信息,有时候需要关联查出用户信息. 第一种方法:我们直接关联查询出所有订单和用户的信息 select * from orders o ,user u where o.user ...

  8. Mybatis懒加载

    前言 现有两张表emp.dept如下: 当我们想要查询职员的所有信息时,需要涉及两张表: 第一种方法--多表连接查询 使用sql语句:"select * from emp left join ...

  9. Android--Fragment 实现懒加载和不重复加载

    版权声明:本文为博主原创文章,转载请标明出处. https://blog.csdn.net/chaoyu168/article/details/79217223 基类: package fragmen ...

最新文章

  1. iOS 发布APP关于IDFA的相关内容
  2. Directx教程(24) 简单的光照模型(3)
  3. 特斯拉Autopilot事故频发,真正意义上自动驾驶还要多久问世?
  4. Oracle学习笔记:创建logical standby
  5. spring aop源码实现分析
  6. webpack打包html里的img图片
  7. [register]-ARMV8-aarch64 部分系统寄存器总结(必背)
  8. java 线程安全的原因_Java并发编程——线程安全性深层原因
  9. 华为云PB级数据库GaussDB(for Redis)揭秘第五期:高斯 Redis 在IM场景中的应用
  10. 关于python_关于Python,你必须知道的事!
  11. mysql完整性约束命名_第5章--MySQL索引与完整性约束.ppt
  12. 商家后台服务操作失败!服务上架失败【已上架过此类型插件】
  13. Linux环境下向github上传代码(生成token、生成本地密钥)
  14. Linux系统的关机重启命令
  15. 送给计算机老师的话,毕业送给老师的话短句
  16. xming Error: Can‘t open display:
  17. 从0到1了解Prometheus
  18. 喜欢的最新美剧更新时间表,最爱《传世》了
  19. 110道Python面试笔试题超强汇总
  20. c语言实用程序6,C语言实用程序150例

热门文章

  1. 计算机启动黑屏不显示桌面图标,win7系统电脑启动开机黑屏不显示只有鼠标图标的解决方法...
  2. 腾讯应用宝联运接入YSDK的坑(Nginx的CA证书配置,回调地址)
  3. html背景音乐bgsound,js控制网页背景音乐播放停止(bgsound)
  4. MFC-控件-标签-设置背景透明
  5. 领峰:国内现货白银交易平台哪些可以选择开户
  6. UI自动化-----三大等待
  7. Python中SettingWithCopyWarning警告信息的解决方法
  8. CCF CSP认证历年真题 满分代码(持续更新中)
  9. 有多少人在国企,却不是正式工,属于劳务派遣的,来说说你的情况?
  10. COMPUTER VISION FOR COVID-19 CONTROL: A SURVEY