问答详情
源自:5-3 一对多关系的配置 Ⅲ

使用MyBatis进行一对多的关系映射进行查询只能查到一条结果

为什么我的配置完一对多关系映射之后,只能输出一条结果。

提问者:huageniuniude 2016-05-21 18:54

个回答

  • 人生百态我在其中
    2018-10-10 16:27:13

    我的错误是前面这样的:jog4j显示有多条数据,页面回复显示总是那一条数据。后来发现那个别名真的要有,当初想着有可能不影响,然后发现不行,a.id给个别名就行了

  • qq_戎码一生_03590608
    2017-03-29 15:16:03

    不知道是不是和我一样?我是因为cammand_content表中command_id字段的3个值都是不同的,后来改成相同的就可以随机查出数据

  • 笑靥无伤
    2016-05-22 13:31:52

    要进行分组 

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE mapper

        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">


    <mapper namespace="Command">

      <resultMap type="com.imooc.bean.Command" id="Command">

        <id column="id" jdbcType="INTEGER" property="id"/>

        <result column="command" jdbcType="VARCHAR" property="command"/>

        <result column="DESCRIPTION" jdbcType="VARCHAR" property="description"/>

        

        <!-- resultMap 夸文件引用需要标明夸文件的  namespace="CommandContent" -->

        <!-- 在主表中关联字表  在一个entity中包含另一个 entity -->

        <collection property="content"  resultMap="CommandContent.Content"/>

      </resultMap>

      

      <select id="queryCommandList" parameterType="com.imooc.bean.Command" resultMap="Command">

      <!-- 对应查询结果的字段来匹配 而不是数据库中的字段名

      a.id 与 b.id  查询出结果后 id字段不会带前缀 

      那么结果集 中会有两个id字段

      

      如果给字段增加别名,那么getInt()  中则要写别名

      

       -->

        select a.ID as name, a.command, a.DESCRIPTION, b.ID, b.CONTENT, b.COMMAND_ID

        from COMMAND a left join COMMAND_CONTENT b

        on a.ID=b.COMMAND_ID

        <where>

        <if test="command != null and !&quot;&quot;.equals(command.trim())">

        and a.command=#{command}

        </if>

        <if test="description != null and !&quot;&quot;.equals(description.trim())">

        and a.DESCRIPTION like '%' #{description} '%'

        </if>

        </where>

      </select>

    </mapper>