mybatis中使用延迟加载就报错,还是npe,以前没有问题; 网上也查不到;

CielSwift 发布于 02/11 22:14
阅读 48
收藏 0

 <settings>
    <!-- 这个属性是开启全局延迟加载,不用手动在单个关联中配置。 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- true:其中一个懒属性被加载,其他懒属性也立即加载 , false :按需加载 -->
        <setting name="aggressiveLazyLoading" value="false"/>
        <setting name="lazyLoadTriggerMethods" value="true"/>
        
        <!-- 打开二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>

--------------------------------------------------

<!-- 延迟加载 -->
    <select id="queryOrderLazyLoding" resultMap="com.df.mapper.UODGJoin.layloding1">
        select * ,uid as u_uid from t_orders
    </select>                                         
                                                              
    <select id="queryUserlazy" parameterType="Integer" resultType="user" useCache="false" >
        select * from t_user where t_user.uid = #{id}
    </select>
    <select id="queryDetaillazy" parameterType="Integer" resultType="detail">
        select * from t_detail where t_detail.oid = #{id}
    </select>
    
    
    <resultMap type="Orders" id="layloding1">
        <id column="oid" property="oid"/>
        <result column="uid" property="uid"/>
        <result column="ocreatetime" property="ocreatetime"/>
        <result column="onumber" property="onumber"/>
      
        <association property="user" javaType="com.df.domail.User" select="com.df.mapper.UODGJoin.queryUserlazy" column="u_uid">
            
        </association>
        <collection property="details" ofType="com.df.domail.Detail" select="queryDetaillazy" column="oid">
            
        </collection>
    </resultMap>

--------------------------------------------------

@Test
    void test() {
        SqlSession ss = ssf.openSession();
        UODGJoin uao = ss.getMapper(UODGJoin.class);
        
        List<Orders> o = uao.queryOrderLazyLoding();
        
        Orders o1 = o.get(1);
        
        System.err.println("kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
        
        System.err.println(o1.getUser().getUname());
        System.err.println(o1.getDetails().get(1));
        
        System.err.println("kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
        
        ss.commit();
        ss.close();
    }

可是就是出错 ;

加载中
返回顶部
顶部