关本文是Mybatis基础系列的第四篇文章,点击下面链接可以查看前面的文章: mybatis基础系列(三)——动态sql mybatis基础系列(二)——基础语法、别名、输入映射、输出映射 mybatis基础系列(一)——mybatis入门 关联查询 表设计时通常需要分析表与表的关联关系 ...
前言 使用ORM框架我们更多的是使用其查询功能,那么查询海量数据则又离不开性能,那么这篇中我们就看下mybatis高级应用之延迟加载 一级缓存 二级缓存。使用时需要注意延迟加载必须使用resultMap,resultType不具有延迟加载功能。 一 延迟加载 延迟加载已经是老生常谈的问题,什么最大化利用数据库性能之类之类的,也懒的列举了,总是我一提到延迟加载脑子里就会想起来了Hibernate g ...
2017-08-20 18:30 2 1985 推荐指数:
关本文是Mybatis基础系列的第四篇文章,点击下面链接可以查看前面的文章: mybatis基础系列(三)——动态sql mybatis基础系列(二)——基础语法、别名、输入映射、输出映射 mybatis基础系列(一)——mybatis入门 关联查询 表设计时通常需要分析表与表的关联关系 ...
什么是延迟加载 resultMap中的association和collection标签具有延迟加载的功能。 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息。使用关联信息时再去加载关联信息。 设置延迟加载 需要 ...
踏踏实实踏踏实实,开开心心,开心是一天不开心也是一天,路漫漫其修远兮。 --WZY 一、延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表 ...
一,MyBatis一级缓存(本地缓存) My Batis 一级缓存存在于 SqlSession 的生命周期中,是SqlSession级别的缓存。在操作数据库时需要构造SqlSession对象,在对象中有一个数据结构用来存储缓存数据。不同的SqlSession之间的数据缓存是不能共享 ...
一级缓存 Mybatis的一级缓存存放在SqlSession的生命周期,在同一个SqlSession中查询时,Mybatis会把执行的方法和参数通过算法生成缓存的键值,将键值和查询结果存入一个Map对象中。 如果同一个SqlSession中执行的方法和参数完全一致,那么通过算法 ...
前言 说起mybatis的一级缓存和二级缓存我特意问了几个身边的朋友他们平时会不会用,结果没有一个人平时业务场景中用。 好吧,那我暂且用来学习源码吧。一级缓存我个人认为也确实有些鸡肋,mybatis默认开启一级缓存,支持在同一个会话(sqlsession)同一个statement ...
一级缓存 是SqlSession级别的缓存,当使用了clearCache方法和,或者close方法的话,这个缓存失效,如果还有同样的查询,则还会发送一次查询 二级缓存 二级缓存是跨sqlsession的缓存,就是mapper缓存,也就是说,如果前面执行了close方法,后一个 ...
缓存原理图: 一、一级缓存(本地缓存) sqlSession级别的缓存。(相当于一个方法内的缓存) 每一次会话都对应自己的一级缓存,作用范围比较小,一旦会话关闭就查询不到了; 一级缓存默认是一直开启的,是SqlSession级别的一个Map;与数据库同一次会话期间查询到的数据 ...