首页 > 其他分享 >MyBatis-分步查询的优势(延迟加载)

MyBatis-分步查询的优势(延迟加载)

时间:2022-08-31 15:02:34浏览次数:68  
标签:fetchType 查询 分步 MyBatis 加载 延迟

分步查询的优点:可以实现延迟加载  

但是必须在核心配置文件中设置全局配置信息(mybatis-config.xml):

lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象都会延迟加载

(设为true之后,若只查询员工的信息,就不会查询部门信息)

    <settings>
        <!--将下划线映射为驼峰-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>

aggressiveLazyLoading:当开启时,任何方法的调用都会加载该对象的所有属性。

否则,每个属 性会按需加载 此时就可以实现按需加载,获取的数据是什么,就只会执行相应的sql。

    <settings>
        <!--将下划线映射为驼峰-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--按需加载-->
        <setting name="aggressiveLazyLoading" value="false"/>
    </settings>

此时可通过association和 collection中的fetchType属性设置当前的分步查询是否使用延迟加载,fetchType="lazy(延迟加 载)|eager(立即加载)"

<resultMap id="empAndDeptByStepResultMap" type="Emp">
        <id column="emp_id" property="empId"></id>
        <result column="emp_name" property="empName"></result>
        <result column="age" property="age"></result>
        <result column="gender" property="gender"></result>
        <!--
            property:设置需要处理映射关系的属性的属性名
            select:设置分步查询的sql的唯一标识
            column:将查询出的某个字段作为分步查询的sql的条件
            fetchType:在开启了延迟加载的环境中,通过该属性设置当前的分步查询是否使用延迟加载
            fetchType="eager(立即加载)|lazy(延迟加载)"
        -->
        <association property="dept" fetchType="eager"
                     select="com.atguigu.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"
                     column="dept_id"></association>
    </resultMap>

 

标签:fetchType,查询,分步,MyBatis,加载,延迟
From: https://www.cnblogs.com/Joyce-mi7/p/16643102.html

相关文章

  • Mybatis学习笔记(二)
    CRUD:增删改在接口的返回值可以是int也可以是void 查询必须设置结果集:resultType设置成java类(全限定名或别名)resultMap自定义映射,可以一对多或多对一 btw:当结果集......
  • dhtmlx中的grid加载不了数据
    我是一个初学者,求大神帮我看下这data为什么加载不了<scripttype="text/javascript">vardata={rows:[{"id":"1",data:["烟雾测试","金华尾气检测站","423cvhjj","1233676......
  • mybatis 的ResultMap和ResultType区别是什么?
     官方文档说明:ResultType:期望从这条语句中返回结果的类全限定名或别名。注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。resultType和resul......
  • 带有详细答案的 SQL 案例问题(分步)
    带有详细答案的SQL案例问题(分步)我们分析了超过50,000次从上市前到财富500强公司的采访大科技采访(BTI)策划最新SQL面试问题和解决方案的独家列表,以便您在下一......
  • 美丽的 3d 按钮 — 分步指南
    美丽的3d按钮—分步指南HTML对于HTML,我们只有一个带有“CLICK”文本的按钮元素。<button>点击</button>CSS现在我们将为按钮设置一些基本样式。首先,我们将通......
  • mybatis 中resultMap原理
    mybatis中从数据库中查询出数据,然后转化成对象的过程中起了关键作用的一个类是ResultMap.他定义了查询的结果最终转化成了哪个类的对象,并且定义了每个对象的属性是由......
  • d3.js 分页加载
    当数据量过大时,使用d3.js渲染各种图时,如果一下子加载出来,会出现加载过慢,这样使用效果就不是太好,为了解决这个问题,使用了分页加载数据并渐进渲染各种图。一、数据格式......
  • MyBatis基础
    MyBatis是什么这里就引用一下,Mybatis官方文档的定义,来简单说明一下Mybatis的整体作用:MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis......
  • PreloadJS预加载插件
     一个Javascript插件,可以管理和协调资源的加载进度。 CDN地址:https://cdn.baomitu.com/PreloadJS //实例LoadQueue类,得到实例对象queue。letqueue=new......
  • Element UI el-select 从远端加载数据
    最近做项目用到了ElementUI的el-select组件,我的需求是想要从远端服务器直接加载options,加载的时候有个loading,但是ElementUI文档只给出了从远端搜索的案例,用起来不......