懒加载的好处:

  所谓懒加载(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());
}
}

注意事项:

 

最新文章

  1. SQL查询关于相对路径、矢代、绝对路径、递归、计算列的速度对比跟优化-SOD群记录
  2. 哆啦A梦 canvas
  3. jquery尺寸:宽度与高度
  4. SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
  5. input 只读不能修改
  6. Caliburn.Micro(CM) 穿过 Popup 绑定方法
  7. 2015 Multi-University Training Contest 1 - 1001 OO’s Sequence
  8. 关于java.lang.OutOfMemoryError: Java heap space的错误分析
  9. linux搜索jar内容
  10. iOS中数据库运用之前的准备-简单的数据库
  11. mac版gif格式录屏工具下载和使用
  12. Jquery 实现动态加入table tr 和删除tr 以及checkbox的全选 和 获取加入TR删除TR后的数据
  13. 以todomvc为例分析knockout、backbone和angularjs
  14. 数据库表间多对多关系(附带额外字段)的实体类(POJO 或 POCO)表示
  15. IntelliJ IDEA 2017.1.4 x64配置说明
  16. thinkhphp 上传文件或者图片
  17. 硬木地板 JDFZ1667
  18. windows类似grep的命令——findstr
  19. 使用Gradle构建web工程配置详解
  20. day02代码

热门文章

  1. HttpSession的线程安全问题及注意事项
  2. codeforces 659 G. Fence Divercity 组合数学 dp
  3. css学习笔记(6)
  4. do-while语句
  5. ThinkPHP 3.2.3集成uploadify上传控件
  6. 安卓:drawable
  7. EBS R12重启后无法进入登录页面
  8. sudo用户管理
  9. JAVA 多线程和并发学习笔记(一)
  10. java web须知细节