懒加载的好处:

  所谓懒加载(lazy)就是延时加载,延迟加载。什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载。至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,
因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,我们让数据在需要的时候才进行加载,这时我们就用到了懒加载。
总结为:

1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强,层次感很强。

2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合

3>只有当真正需要资源时,再去加载,节省了内存资源。

操作步骤:

一、在mybatis配置文件中打开启用懒加载

config.xml:

<!-- 三、懒加载 -->
<settings>
<!-- 打开延迟加载的开关 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 将加载改为按需加载 -->
<setting name="aggressiveLazyLoading" value="false"/>
</settings>

二、在映射sql语句的xml中配置运用懒加载

dept.xml:

    <resultMap type="Dept" id="DeptList2">
<result column="deptno" property="deptno"/>
<result column="dname" property="dname"/>
<result column="loc" property="loc"/>
<!-- 懒加载内容:::-->
<!-- property:查询数据的实体类型 \select:sql语句的地址\ofType:语句对应实体。-->
<!-- column:至关重要,表关联的查询关联字段可能不尽一样,但是以主表字段为纽带,让另一张表的查询字段去用它的值查询,-->
<!-- 该字段错误,主表可以得到数据,懒加载会报空指针异常。\-->
<collection property="emps"
select="com.ckx.entityMapper.Emp.selectEmps2" column="deptno" ofType="Emp">
</collection>
</resultMap> <select id="selectDeptNo" parameterType="int" resultMap="DeptList2">
SELECT * FROM dept WHERE DEPTNO = #{deptno};
</select>

注意:在selectDeptNo中我们至于要知道需要查询的部门的数据,但他的返回值resultMap="DeptList2"是个集合,请注意,并且在该集合里配置了

职员表的懒加载,在我们需要的术后,懒加载才会帮我们去加载相对部门的职员信息。

三、运行测试

DeptTest.java:

public void selectDeptNo(){
DeptDao dao = sqlSession.getMapper(DeptDao.class);
Dept d = dao.selectDeptNo(20);
System.out.println(d.getDname());
List<Emp> list = d.getEmps();
for (Emp emp : list) {
System.out.println(emp.getEname()+"\t"+emp.getSal());
}
}

注意事项:

 

mybatis(三)懒加载的更多相关文章

  1. 关于 Mybatis 设置懒加载无效的问题

    看了 mybatis 的教程,讲到关于mybatis 的懒加载的设置: 只需要在 mybatis 的配置文件中设置两个属性就可以了: <settings> <!-- 打开延迟加载的开 ...

  2. MyBatis使用懒加载mybatis-config.xml配置

    在mybatis-config.xml添加如下配置 <settings> <!--要使延迟加载生效必须配置下面两个属性--> <setting name="la ...

  3. mybatis 详解(八)------ 懒加载

    本章我们讲如何通过懒加载来提高mybatis的查询效率. 本章所有代码:http://pan.baidu.com/s/1o8p2Drs 密码:trd6 1.需求:查询订单信息,有时候需要关联查出用户信 ...

  4. mybatis中的懒加载

    知识点:mybatis中的懒加载的使用 参考:https://www.cnblogs.com/ysocean/p/7336945.html?utm_source=debugrun&utm_me ...

  5. Mybatis 懒加载使用及源码分析

    Mybatis 懒加载的使用 什么是懒加载?懒加载的意思就是在使用的时候才去加载,不使用不去加载,相反的就叫饥饿加载或者立即加载.懒加载在Mybatis中一般是存在与联合查询的情况,比如查询一个对象的 ...

  6. MyBatis --- 映射关系【一对一、一对多、多对多】,懒加载机制

    映射(多.一)对一的关联关系 1)若只想得到关联对象的id属性,不用关联数据表 2)若希望得到关联对象的其他属性,要关联其数据表 举例: 员工与部门的映射关系为:多对一 1.创建表 员工表 确定其外键 ...

  7. 【转】实现ViewPager懒加载的三种方法

    方法一 在Fragment可见时请求数据.此方案仍预加载了前后的页面,但是没有请求数据,只有进入到当前Framgent时才请求数据. 优点:实现了数据的懒加载缺点:一次仍是三个Framgment对象, ...

  8. JPA数据懒加载LAZY配合事务@Transactional使用(三)

    上篇博文<JPA数据懒加载LAZY和实时加载EAGER(二)>讲到,如果使用懒加载来调用关联数据,必须要保证主查询session(数据库连接会话)的生命周期没有结束,否则,你是无法抽取到数 ...

  9. mybatis和hibernate中的懒加载

    概念:所谓懒加载就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为内存容量有限 ,为了减 ...

随机推荐

  1. C# 中Join( )的理解

    在MSDN中对Join( )的解释比较模糊:在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻塞调用线程(线程A),直到某个线程终(线程B)止为止. 首先来看一下有关的概念: 我 ...

  2. bootstrap表格内容垂直居中

    td{ vertical-align: middle !important;}

  3. 调Windows 7的图片浏览器查看图片

    public static void viewPicFromWindows(string pPicPath) { if (pPicPath!="" && Syste ...

  4. SQL总结(三)其他查询

    SQL总结(三)其他查询 其他常用的SQL,在这里集合. 1.SELECT INTO 从一个表中选取数据,然后把数据插入另一个表中.常用于创建表的备份或者用于对记录进行存档. 语法: SELECT c ...

  5. php-fpm 老是warning 进程退出问题

    http://yangjunwei.com/a/723.html 分析Centos系统下LNMP频繁502 Bad Gateway问题 2012-01-28 杨俊伟 )     最近VPS总是出现 N ...

  6. Shiro 整合SpringMVC 并且实现权限管理

    Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大 ...

  7. bzoj1513: [POI2006]Tet-Tetris 3D

    Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维的版本, 在里面很多立方体落在平面板,一个立方体开始落下直到碰上一 ...

  8. 如何查看oracle数据库告警日志

    目标:查看alert日志 su - oracle cd $ORACLE_BASE/diag/rdbms/LXY/LXY/trace tail -100f alert_LXY.log 我的ORACLE_ ...

  9. Lambda表达式的演化,委托-匿名方法-Func-Lambda

    匿名方法 很多时候委托接收的方法是一次性的或者方法体是非常简单的... 例三: 我们可以写成: 有没有发现我们每次都要定义委托,很多时候签名可能是一样的.这样就没有必要定义重复的. 然后又过了很久很久 ...

  10. Codeforces724D [字符串][乱搞][贪心]

    /* 不要低头,不要放弃,不要气馁,不要慌张 题意:给你一个区间长度n和一个字符串,要求在字符串中选择一些symbol使得字符串的任意长度为n的子区间都存在至少一个symbol. 任意选取symbol ...