美文网首页
延迟加载

延迟加载

作者: Stringer | 来源:发表于2016-11-26 09:38 被阅读13次

    resultMap中的association、collection支持延迟加载的功能

    延迟加载:先从单表查询,需要时再去关联表查询,大大提高数据库性能

    mapper.xml
    需要定义两个mapper方法对应的statement
    1.只查询订单信息
    select * from orders
    在查询订单的statement中石油association去延迟加载下面的statement

    2.关联查询用户信息
    通过上面查询到的订单信息中的user_id去关联查询用户

    <resultMap type="cn.ztc.mybatis.po.Orders" id="OrdersUserLazyLoadingResultMap">
            <<id column="id" property="id"/>
            <result column="user_id" property="userId"/>
            <result column="number" property="number"/>
            <result column="createtime" property="createtime"/>
            <result column="note" property="note"/>
            <!-- 实现对用户信息延迟加载 
                select:指定延迟加载需要执行的statement的id(根据user_id查询用户信息的statement)
                column:订单信息中关联查询用户信息所要查询的列,是user_id
                关联查询的sql:
                (SELECT username from user WHERE `user`.id=orders.user_id) username,
                    (SELECT sex from user WHERE `user`.id=orders.user_id) sex
            -->
            <association property="user" javaType="cn.ztc.mybatis.po.User" select="cn.ztc.mybatis.mapper.UserMapper.findUserById" column="user_id">
                
            </association>
        </resultMap>
        
        <select id="findOrdersUserLazyLoading" resultMap="OrdersUserLazyLoadingResultMap">
            select * from orders
        </select>```
    mapper.java
    

    public List<Orders> findOrdersUserLazyLoading()throws Exception;```

    测试思路:
    1.执行 findOrdersUserLazyLoading方法,只查询订单信息
    2.在程序中遍历上一步中查询出的List<Orders>.当我们调用Orders中的getUser方法时,开始进行延迟加载
    3.调用UserMapper.xml中的finduserById方法获取用户信息

    在SqlMapConfig中配置延迟加载

    <settings>
            <!-- 打开延迟加载开关 -->
            <setting name="lazyLoadingEnabled" value="true"/>
            <!-- 设置积极加载为消极加载 -->
            <setting name="aggressiveLazyLoading" value="false"/>
        </settings> ```
    
    使用延迟加载的方法,首先查询简单的sql(单表或关联表)

    相关文章

      网友评论

          本文标题:延迟加载

          本文链接:https://www.haomeiwen.com/subject/lnkipttx.html