zoukankan      html  css  js  c++  java
  • mybatis(三)懒加载

    懒加载的好处:

      所谓懒加载(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()+"	"+emp.getSal());
            }
        }

    注意事项:

     
  • 相关阅读:
    Scala中隐式转换(implicit conversion)的优先顺序
    protege4.0使用中的理论
    国外程序员整理的 C++ 资源大全
    什么是本体论?
    深入分析C++引用
    在基于对话框的MFC程序中,使程序在任务栏中不显示图标
    PhoneGap搭建运行环境(3.2版本)
    [JS代码]如何判断ipad或者iphone是否为横屏或者竖屏
    windwos iis 7.5 使用html 报405错误
    NodeJs 开源
  • 原文地址:https://www.cnblogs.com/ckxlovejava/p/6081617.html
Copyright © 2011-2022 走看看