文档章节

Mybatis Collection查询集合只出现一条数据

_
 _Roger_
发布于 2015/10/14 15:08
字数 261
阅读 3044
收藏 1

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>

    

© 著作权归作者所有

共有 人打赏支持
_
粉丝 29
博文 82
码字总数 39915
作品 0
武汉
私信 提问
加载中

评论(2)

l
lsm121
修改了主表与从表的id别名之后 连数据库字段名都改了还是只能查一条数据
rookieit
rookieit
感谢大神,这个真的坑~~~
Mybatis通过一条SQL查出关联的对象

Mybatis通过一条SQL查出关联的对象 以往在做对象的查询时如果需要把关联的对象一起查出来是通过resultMap的子查询来进行的。通过子查询来进行的关联对象的查询时,Mybatis会重新发起一次数据...

234390216
2017/04/27
0
0
使用mybatis获得包含内嵌对象或对象集合的结果(association和collection标签)

项目中经常会出现获得一个对象,对象中又包含对象属性或对象集合属性,这种场景就是“有内嵌对象或集合的对象”。 这两种情况处理起来类似,会引入两个重要的标签:association和collection标...

李阳-kevin
2018/10/29
0
0
Mybatis Mapper.xml 配置文件中 resultMap 节点的源码解析

相关文章 Mybatis 解析配置文件的源码解析 Mybatis 类型转换源码分析 Mybatis 数据源和数据库连接池源码解析(DataSource) Mybatis Mapper 接口源码解析(binding包) Mybatis 解析 SQL 源码...

tsmyk0715
2018/11/18
0
0
MySQL批量插入返回自增ID的问题

MySQL批量插入返回自增ID的问题 Mz的博客2017-08-1838 阅读 数据库MySQL 业务场景 现需将表A中的数据经过转换后迁移入表B,并将一些附加数据存入表C,表C通过一个BId字段来与表B中的数据进行...

Mz的博客
2017/08/18
0
0
【MyBatis框架】配置文件-resultMap总结

resultMap总结 resultType: 作用: 将查询结果按照sql列名pojo属性名一致性映射到pojo中。 场合: 常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可...

Mysoft
2015/09/18
52
0

没有更多内容

加载失败,请刷新页面

加载更多

在 Ubuntu 上为 CentOS 编译 Rust 程序

现在 CentOS 8 还没出来,最新的是 CentOS 7.6,上面搭载的 glibc 版本是 2.17,都已经是 2012 年那时候的版本了。 现在开发者比较常用的桌面 Linux 系统,比如 Ubuntu / Debian / Mint / A...

helloclia
35分钟前
8
0
Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期

前言:从本篇开始,将进入Multimedia框架,包含MediaPlayer, Camera, Surface, MediaRecord, 接下来几篇都是MediaPlayer相关。同样看下Agenda如下: MediaPlayer的状态图 Idle 状态 End 状态...

天王盖地虎626
今天
2
0
IntelliJ IDEA创建第一个Spring boot项目

下载maven:http://maven.apache.org/download.cgi 开发工具:IntelliJ IDEA JDK: Java JDK1.8 ## 1.为了第一个项目初始化速度加快,我们先来配置maven: 添加配置: 选择Build,Execution,Dep...

凌宇之蓝
今天
3
0
Coding and Paper Letter(四十五)

资源整理。 1 Coding: 1.Python库gempy,一种基于Python的开源三维结构地质建模软件,它允许从界面和方向数据隐式(即自动)创建复杂的地质模型。 它还支持随机建模以解决参数和模型的不确定...

胖胖雕
今天
7
0
golang 声明一个指定长度的数组,用于后续添加

很多时候我们需要声明一个指定长度的数组,用于后续添加.在使用go的时候要注意,下面的第一个例子会有报错 "non-constant array bound",应该使用第二个例子. Length 是动态的值 有报错的例子 ...

漫步海边小路
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部