推广 热搜: 缓解疲劳脚垫,  环保防静电桌垫,  63*125气缸  2022  收购ACF  回收ACF  挡煤帘子  济宁推杆  麻将  AH0.6/12矿用按钮箱 

延迟加载 、什么是延迟加载

   日期:2023-04-04     浏览:52    评论:0    
核心提示:网络延迟加载失败什么意思网络信号质量差导致页面没有加载出来。网络延迟加载失败意思是网络信号质量差导致页面没有加载出来。网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。chapter

网络延迟加载失败什么意思

网络信号质量差导致页面没有加载出来。网络延迟加载失败意思是网络信号质量差导致页面没有加载出来。网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。

chapter-5--延迟加载(lazyLoadingEnabled、aggressiveLazyLoading、fetchType)

一、lazyLoadingEnabled和aggressiveLazyLoading

我们可以在settings元素中配置延迟加载如下示例:

setting name="lazyLoadingEnabled" value="true" /   !-- 默认为false --

setting name="aggressiveLazyLoading" value="true" / !-- 3.4.1(包含)之前为true,之后为false --

lazyLoadingEnabled和aggressiveLazyLoading常常一起使用,他们一起使用有以下两种不同的起作用的情况:

1、 lazyLoadingEnabled: true/false    aggressiveLazyLoading: true 

这种情况下,会 依层次 分别延迟加载,但是不管POJO这个属性 是否被调用都会加载进来 ,举个例子:

映射文件:

mapper namespace="com.learn.mybatis.chapter05.cascading.EmployeeMapper"

  resultMap type="com.learn.mybatis.chapter05.cascading.Employee" id="employee"

    id column="id" property="id" /

    result column="real_name" property="realName" /

    result column="sex" property="sex"

    typeHandler="com.learn.mybatis.chapter04.typehandler.SexEnumTypeHandler" /

    result column="birthd***" property="birthd***" /

    result column="mobile" property="mobile" /

    result column="email" property="email" /

    result column="position" property="position" /

    result column="note" property="note" /

    association property="workCard" column="id"

    select="com.learn.mybatis.chapter05.cascading.WorkCardMapper.getWorkCardByEmpId" /

    collection property="employeeTasks" column="id"

    select="com.learn.mybatis.chapter05.cascading.EmployeeTaskMapper.getEmployeeTaskByEmpId" /

    discriminator javaType="long" column="sex"

      case value="0" resultMap="MaleHealthFormMapper" /

      case value="1" resultMap="femaleHealthFormMapper" /

    /discriminator 

  /resultMap

  resultMap type="com.learn.mybatis.chapter05.cascading.FemaleEmployee"

  id="femaleHealthFormMapper" extends="employee"

      association property="femaleHealthForm" column="id"

      select="com.learn.mybatis.chapter05.cascading.FemaleHealthFormMapper.getMaleHealthForm" /

  /resultMap

  resultMap type="com.learn.mybatis.chapter05.cascading.MaleEmployee"

  id="MaleHealthFormMapper" extends="employee"

      association property="maleHealthForm" column="id"

      select="com.learn.mybatis.chapter05.cascading.MaleHealthFormMapper.getMaleHealthForm" /

  /resultMap

从映射文件中我们可以提炼出如下的层次关系:

discriminator 元素中指定的 resultMap 中的 association 级联关系会同实体一起首先被加载进来,上述例子中的Employee员工实体和实体中的体检表级联属性会首先加载进来,然后是雇员任务和工卡(这两个属性都位于id为employee的resultMap中的association元素中所以它们是同一层),最后是任务( 任务 与 雇员任务 存在 直接的级联 而与员工实体存在 间接的级联 ,所以它和雇员任务及工卡不是一层)被加载进来。

2、 lazyLoadingEnabled: true   aggressiveLazyLoading: false

这种情况下,只有实体主体被加载进来,其它的级联属性只有当被调用时才会被加载,这里也没有分层次加载,

一句话总结就是用到的时候才会加载。

二、fetchType

上述的设置都是针对 全局的 ,在某些情况下不够灵活。比如负责员工任务信息分配的领导只关心雇员实体和雇员任务的级联关系,其它的如工卡与雇员实体的级联关系则不需要关注,但是工卡和雇员任务恰恰和雇员实体都是同一层的直接级联关系。这时候就需要用 fetchType 单独为某个级联关系设置是否延迟加载。

需要特别注意的时fetchType属性只能在association和collection中进行设置,discriminator没有这个属性。

fetchType的取值有两个:

eager: 获得当前的POJO后立即加载对应的数据。

lazy:获得当前的POJO后延迟加载对应的数据。

说句废话,fetchType属性的优先级是高于全局属性的,会覆盖它们。

maven推迟加载

maven推迟加载

答:映射文件:

需要定义两个mapper的方法对应的statement,一个用于简单的查询,另一个用于需要查询时再查询。

(1)只差订单信息

(2)、关联查询用户信息:

上边先去执行findOrderLazyLoad,当需要去查询用户的时候再去执行findUserLazyLoad,通过resultMap的定义将延迟加载执行配置起来。

!-- 订单查询关联用户的resultMap,将整个查询结果映射到orders中,延迟加载 -

select:指定延迟加载需要执行的statement的id(是根据user_id查询用户信息的statement),要使用userMapper.xml中findUserById完成根据用户id(user_id)用户信息的查询,如果findUserById不在本mapper中需要前边加namespace,column:订单信息中关联用户信息查询的列,是user_id。

关于延迟加载和什么是延迟加载的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

 
标签: 加载 雇员 实体
打赏
 
更多>同类资讯
0相关评论

推荐资讯
网站首页  |  VIP套餐介绍  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  SITEMAPS  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报