在mybatis-config.xml中开启延迟加载:开启懒加载、延迟加载没有效果解决;

声明使用JDK8测试;

参考官网配置,网址如下:
http://www.mybatis.org/mybatis-3/zh/configuration.html

在mybatis-config.xml中开启延迟加载:开启懒加载、延迟加载没有效果解决;_第1张图片
aggressiveLazyLoading 在mybatis版本小于3.4.1时候,默认是true开启状态,懒加载要有效果需要手动关闭;
①在mybatis-config.xml中 手动开启lazyLoadingEnabled ;
②在mybatis-config.xml中 手动关闭aggressiveLazyLoading;

或者使用最新 mybatis版本 mybatis3.4.7

   <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        
        <setting name="lazyLoadingEnabled" value="true"/>
        
    settings>

运行下懒加载有效果:使用到 user对象时候加载 sql
在mybatis-config.xml中开启延迟加载:开启懒加载、延迟加载没有效果解决;_第2张图片
放开注释再跑一下;
在mybatis-config.xml中开启延迟加载:开启懒加载、延迟加载没有效果解决;_第3张图片

mapper.xml配置;

   
    <select id="findOrderByNumberLazy" resultMap="orderUserMapLazy">
          SELECT * FROM tb_order where order_number = #{number}
    select>
    <resultMap id="orderUserMapLazy" type="Order" autoMapping="true">
        <id column="id" property="id"/>
        <association property="user" javaType="User" select="queryUser" column="user_id">
        association>
    resultMap>
    <select id="queryUser" resultType="User">
        SELECT  * from tb_user where id = #{user_id}
    select>

UserMapper接口;

 /**
     *  一对一延迟加载
     */
     Order findOrderByNumberLazy(@Param("number")String number);

单元测试;

  /**
     *  一对一懒加载
     */
    @Test
    public void test12() {
        Order order = mapper.findOrderByNumberLazy("20140921002");
        System.out.println(order.getOrderNumber());
        System.out.println("===========");
        System.out.println(order.getUser());

    }

在mybatis-config.xml中开启延迟加载:开启懒加载、延迟加载没有效果解决;_第4张图片

你可能感兴趣的:(mybatis)