文档章节

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

_
 _Roger_
发布于 2015/10/14 15:08
字数 261
阅读 3013
收藏 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
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
MyBatis之使用resultMap实现高级映射

对于数据库中对表的增删改查操作,我们知道增删改都涉及的是单表,而只有查询操作既可以设计到单表操作又可以涉及到多表操作,所以对于输入映射parameterType而言是没有所谓的高级映射的,也...

瑟青豆
06/20
0
0
mybatis学习教程中级(八)延迟加载

1 引言 查询数据库时候,尽量使用单表查询提示性能,快啊~但是如果有多表联合和,那就可以使用延迟记载。首先说,在没得余地的情况下试用,是有点优势。 可以简单理解为,只有在使用的时候,...

ycy蓝码
2015/09/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Oracle return exit continue

常在循环体中看到下面3种语句: return exit continue 举例说明 啥都没有 -- none begin for i in 1 .. 10 loop if i < 5 then dbms_output.put_line('i < 5, i = ' || to_char......

taadis
今天
2
0
JSONObject 转换时出错 InvocationTargetException

JSONObject 转换时出错java.lang.reflect.InvocationTargetException 一时看不出来是什么问题。 挺奇怪的。 百度参考了一下这个 网页的解决方案 说是类型不对,空? 仔细查看代码,果然是有一...

之渊
今天
3
0
no such module 'pop'问题

在github上 clone 了一个 swift 项目,编译时提示"no such module 'POP'"错误,查了一下居然是因为podfile中指定的最低版本是iOS 11.0,大于我测试手机的iOS版本10.3.3,将Podfile中的最低版...

yoyoso
今天
3
0
redis 系列一 -- 简介及安装

1.简介 redis -- remote dictionary server 远程字典服务 使用 C 语言编写; 高性能的 key-value数据库; 内存数据库,支持数据持久化。 Redis 是一个开源(BSD许可)的,内存中的数据结构存...

imbiao
今天
4
0
nginx log记录请求响应时间

有时为了方便分析接口性能等,需要记录请求的时长,通过修改nginx的日志格式可以做到,如 添加一个新的log_format log_format timed_combined '$remote_addr - $remote_user [$time_local] "...

swingcoder
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部