zoukankan      html  css  js  c++  java
  • Mybatis Collection查询集合只出现一条数据

    1、原因

        如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条。

    2、解决办法

        级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的。但在mybatis中主从表需要为相同字段名设置别名。设置了别名就OK了。

    例子:

    主表Standard, 从表StandEntity,均有名为id的字段

    复制代码
    <resultMap id="StandardAndEntityResultMap" type="whu.edu.irlab.model.Standard" extends="BaseResultMap">
        <collection property="standEntities" ofType="whu.edu.irlab.model.StandEntity">
            (依据下面的select中更名的字段id别名se_id,在此将相同的字段名改为别名)
            <id column="se_id" property="id" jdbcType="INTEGER" /> 
            <result column="stand_id" property="standId" jdbcType="INTEGER" />
            <result column="stand_name" property="standName" jdbcType="VARCHAR" />
            <result column="entity_name" property="entityName" jdbcType="VARCHAR" />
        </collection>
    </resultMap>
     
    <select id="findAllStandardAndEntity" resultMap="StandardAndEntityResultMap">
        select
        standard.*,
        standard_entity.id se_id,(在此将两表中相同的字段名id改为别名se_id,对应的上面collection部分也需要更改)
        standard_entity.stand_id,
        standard_entity.stand_name,
        standard_entity.entity_name
        from
          standard INNER JOIN standard_entity on standard.id = standard_entity.stand_id
    </select>
    作者:战旗 内容声明: 本内容属自己学习使用 ,若有抄袭情邮件(zhanqi3712@qq.com)告知 ,本人会尽快删除
  • 相关阅读:
    几道cf水题
    cf水题
    一道cf水题
    c++list用法
    c++map用法
    c++ vector常见用法
    c++string,常见用法总结
    复变函数考试后的反思
    [FZYZOJ 1204] 零和问题
    [FZYZOJ 1202] 金坷垃
  • 原文地址:https://www.cnblogs.com/liuyun-10/p/6813712.html
Copyright © 2011-2022 走看看