zoukankan      html  css  js  c++  java
  • 测试mybatis延迟加载错误与解决方法

    什么是延迟加载?

    延迟加载又叫懒加载,也叫按需加载,也就是说先加载主信息,需要的时候,再去加载从信息。

    需求:

        查询订单信息,需要时再去查询用户信息

    实现方式:

        编写两个statement,其中一个statement是查询订单信息,一个是查询用户信息,但是查询订单信息的statement要使用resultMap标签进行结果映射。

    Mapper接口:

      /**
        * 延迟加载  查询订单 需要时在查询用户信息
        * */
       public List<OrderExt> lazyLoading();

    Mapper映射文件:OrderMapper.xml

       <resultMap type="orderExt" id="lazyLoading">
          <!-- 订单信息 -->
          <id column="id" property="id" />
          <result column="number" property="number" />
          <result column="user_id" property="user_id" />
          <!-- 用户信息 -->
          <association property="user"
           select="com.heima.mapper.UserMapper.findUserById" column="user_id"/>
         </resultMap>
         <!-- 延迟加载 -->
       <select id="lazyLoading" resultMap="lazyLoading">
          SELECT * from orders
       </select>

      <select id="findUserById" parameterType="int" resultType="com.heima.po.User">
         SELECT * FROM USER WHERE id = #{id}
       </select>

    Mybatis全局映射文件:

        <!-- 延迟加载 懒加载 -->  

        <settings>
            <setting name="lazyLoadingEnabled" value="true" />
            <setting name="aggressiveLazyLoading" value="false" />
         </settings>

    Test类:

        @Test
       public void lazyLoading(){
          SqlSession sqlSession = sqlSessionFactory.openSession();
          OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);
          List<OrderExt> list = mapper.lazyLoading();
          for(OrderExt order : list){
           System.out.println(order);
          }
        }

    在测试过程中出了一个错误:

      

    解决方法:

      把OrderMapper映射文件中的 association标签中的column值写错了,下面是正确写法 ,column这个属性不能省略,否则将报错。

          <association property="user"
             select="com.heima.mapper.UserMapper.findUserById" column="user_id"/>

  • 相关阅读:
    记一次Postgres CPU爆满故障
    Bug 28450914 : ORA-600: [KDLRCI_GET_INLINE_DATA] SELECTING FROM CDB_FEATURE_USAGE_STATISTICS
    获取数据表中列的描述值
    【自考】数据结构第四章树和二叉树,期末不挂科指南,第6篇
    SqlServer视图查询效率测试
    MySQL中使用group by 是总是出现1055的错误
    redis中key键操作
    SQL Server等待事件&mdash;PAGEIOLATCH_EX
    MySQL 什么是索引?
    计算经历的时间
  • 原文地址:https://www.cnblogs.com/muli/p/5154215.html
Copyright © 2011-2022 走看看