zoukankan      html  css  js  c++  java
  • Mybatis 懒加载

    什么是懒加载

      按需加载,先从单表查询,需要时再从关联表去关联查询,能大大提高数据库性能,并不是所有场景下使用懒加载都能提高性能

    Mybatis懒加载:resultMap里面的association、collection都有延迟加载功能

    全局配置文件

        <!--全局配置-->
        <settings>
            <!--延迟加载总开关-->
            <setting name="lazyLoadingEnabled" value="true"/>
            <!--将aggressiveLazyLoading设置为false表示按需加载,默认为true-->
            <setting name="aggressiveLazyLoading" value="false"/>
        </settings>

    XXXXMapper.xml

        <resultMap id="VideoOrderResultMapLazy" type="net.cybclass.online.domain.VideoOrder">
            <id column="id" property="id"></id>
            <result column="user_id" property="user_id"></result>
            <result column="out_trade_no" property="out_trade_no"></result>
            <result column="create_time" property="create_time"></result>
            <result column="state" property="state"></result>
            <result column="total_fee" property="total_fee"></result>
            <result column="video_id" property="video_id"></result>
            <result column="video_title" property="video_title"></result>
            <result column="video_img" property="video_img"></result>
            <!--
            select:指定延迟加载需要执行的statement id
            column:和select查询关联的字段
            -->
            <association property="user" javaType="net.cybclass.online.domain.User" column="user_id" select="findUserByUserId"/>
        </resultMap>
        <!--一对一关联查询订单,订单内容包含用户属性-->
        <select id="queryVideoOrderListLazy" resultMap="VideoOrderResultMapLazy">
            select
                v.id,
                v.out_trade_no,
                v.create_time,
                v.state,
                v.total_fee,
                v.video_id,
                v.video_title,
                v.user_id,
                v.video_img,
                u.name,
                u.pwd,
                u.phone,
                u.head_img,
                u.create_time create_time_u
            from video_order v left join user u on v.user_id=u.id
        </select>
        <select id="findUserByUserId" resultType="net.cybclass.online.domain.User">
            select * from user where id=#{id}
        </select>

    注:部分用户走了一级缓存SqlSession

  • 相关阅读:
    python3中的线程简记
    python3中的SMTP简记
    sql依赖注入简记
    python Internet模块
    python-socket编程简例
    1.docker简介及安装
    kvm迁移
    kvm网络管理
    kvm存储池和存储卷
    2.标准数据类型--字符串
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/13296396.html
Copyright © 2011-2022 走看看