为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

3 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

要进行分组 

<?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>


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信