【已解决】关于MyBatis的collection集合中只能取到一条数据的问题

一、问题

在涉及多表查询的时候,使用collection元素来映射集合属性时,出现了只能查询到一条数据的情况,但用sql语句在数据库中查询会有多条记录。

二、原因

如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条。所以涉及查询所用的表的主键的命名不要相同,否则会混淆。

三、解决

如果关联查询的两个表的主键已经相同了,如表早就已经建好了,现在也不可能改表字段了,那么只需要查询时给关联表查询字段给个不一样的别名即可。

复制代码
<!-- 通用查询映射结果 -->
    <resultMap id="UserResultMap" type="com.gd.mqtest.domain.User">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
        <result column="email" property="email"/>
        <!--<collection property="userDetails" javaType="java.util.ArrayList" ofType="com.gd.mqtest.domain.UserDetail">-->
        <!--    <id column="t_id" property="id" />-->
        <!--    <result column="user_id" property="userId" />-->
        <!--    <result column="color" property="color" />-->
        <!--</collection>-->
    </resultMap>

    <select id="select" resultMap="UserResultMap">
        select u.id, u.name, u.age, u.email,ud.id t_id, ud.user_id, ud.color from user u join user_detail ud on u.id=ud.user_id
    </select>
相关推荐
CTO Plus技术服务中9 分钟前
大数据、开发环境、中间件、数据库运维开发教程
大数据·数据库·中间件
Coding_Doggy19 分钟前
服务器迁移 | psql大批量数据以及navicat重新连接、conda 环境迁移
linux·数据库·人工智能
橘子1320 分钟前
MySQL连接(十四)
数据库·mysql
m0_7066532322 分钟前
用Python创建一个Discord聊天机器人
jvm·数据库·python
渡我白衣32 分钟前
【MySQL基础】(2):数据库基础概念
数据库·人工智能·深度学习·神经网络·mysql·机器学习·自然语言处理
alien爱吃蛋挞38 分钟前
【JavaEE】万字详解Mybatis(上)
数据库·java-ee·mybatis
写代码的【黑咖啡】39 分钟前
HiveSQL 语法详解与常用 SQL 写法实战
数据库·sql
黄筱筱筱筱筱筱筱43 分钟前
7.适合新手小白学习Python的异常处理(Exception)
java·前端·数据库·python
怣501 小时前
MySQL WHERE子句完全指南:精准过滤数据的艺术
数据库·mysql
大鳥1 小时前
第一章 - 数据仓库是什么
大数据·数据库·hive