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

posted @ 2020-07-13 22:47  陈彦斌  阅读(194)  评论(0编辑  收藏  举报