A表和B表一对多的关系

A表

B表

A表和C表也是一对多关系

C表

我现在向查询出A表的所有字段和B表的name字段,C表的name字段

这是我错误的sql语句,可以看出我没有查B表和C表的id字段,这也是我后来查出重复字段的原因

select a.*,b.name,c.name from A a left join B b on a.name=b.name left join C c on a.name=c.name

我的Mybatis配置文件是通过resultMap接收返回的对象

<resultMap id="BpmNodeTemplate" type="com.major.workflow.persistence.model.BpmNodeTemplate">
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="type" column="type" jdbcType="VARCHAR"/>
<result property="title" column="title" jdbcType="VARCHAR"/>
<result property="description" column="description" jdbcType="VARCHAR"/>
<result property="icon" column="icon" jdbcType="VARCHAR"/>
<collection property="groupses" ofType="com.major.workflow.persistence.model.BpmNodeGroups">
<id column="g_id" property="id"></id>
<result column="g_name" property="name"></result>
<result column="node" property="node"></result>
</collection>
<collection property="packages" ofType="com.major.workflow.persistence.model.BpmNodePropertyPackages">
<id column="p_id" property="id"></id>
<result column="p_name" property="name"></result>
<result column="node" property="node"></result>
</collection>
</resultMap>

可以看出我定义了两个Collection来接受查询出来的list对象,也就是B表和C表的name,实体类定义的是list<A>,list<B>,对应的配置文件用collection接收从数据库查询出来的数据。

错误原因:因为我没有查出B,C两表的id所以在resultMap接收数据的时候会将多个相同的name放入collection,最终封装到list里面

这是我查询出来的结果,最终封装的时候lUsertask这个对象的list<A>里面会出现6个数据(其实我只需要两个数据即可活动列表和q),list<B>也是一样

解决办法:把id查出来就行了,resultMap是根据id区分不同的元素,如果你id不同他就会认为你是不同的元素,这个错误在很多人看来很简单就解决了我却头疼了好长时间,网上没有找到解决办法,所以写这篇文章希望给和我一样的朋友一点帮助

Mybatis多表链接查询重复字段问题的更多相关文章

  1. MyBatis 多表联合查询,字段重复的解决方法

    MyBatis 多表联合查询,两张表中字段重复时,在配置文件中,sql语句联合查询时使用字段别名,resultMap中对应的column属性使用相应的别名: <resultMap type=&q ...

  2. OA项目之Mybatis多表链接查询

    xml文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC & ...

  3. 常用SQL之日期格式化和查询重复数据

    本文列举一些工作中常用的SQL,以提升工作效率. 1 日期格式化 使用 DATE_FORMAT(get_date, '%Y-%m-%d') 函数进行格式化.其中:get_date 是需要被格式化的字段 ...

  4. SQL查询和删除重复字段的内容

    --例如: id NAME VALUE 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii --id是主键 --要求得到这样的结果 id ...

  5. oracle 根据字段查询重复数据

      1.情景展示 由上图可知,APPUSERID字段和VIRTUAL_CARDID字段存在一对多的关系,如何将重复的APPUSERID字段的数据查询出来呢? 2.原因分析 先查出重复的APPUSERI ...

  6. 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段

    mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段 先看一下 怎么实现动态的自定义字段查询: 例如: 而field 就是数据表中的某一个字段 String f ...

  7. mysql查询某个字段重复的数据

    查询某个字段重复的数据 ; 查询股票重复的营业厅 ;

  8. MySQL数据库根据一个或多个字段查询重复数据

    系统在开发测试过程中出现bug,比如并发操作没有处理好,数据库中往往会插入重复数据,这些脏数据经常会导致各种问题.bug可以修改,但是数据往往也要处理,处理SQL如下: 1.根据一个字段查找重复数据 ...

  9. Mysql查询某字段重复值并删除重复值

    1.查询重复值: select code,count(*) as count from hospital group by code having count>1; 该语句查询code重复值大于 ...

随机推荐

  1. .Net Core 在Linux服务器下部署程序--(3). 部署.net core 后端程序

    确认第二步中的软件已安装完成 lrzsz文件上传下载软件 zip与unzip压缩包软件 net core 相关软件 确认上述软件安装完成之后,开始部署程序 创建部署文件夹 我的习惯是在usr文件夹下新 ...

  2. 运行SSIS包的六种方式

    注意: 1~5都需要SSIS安装在对应的机器上. 一.直接在Data Tool里运行 右键选择要运行的包,然后直接选择运行包 二.使用SQL Server的Job作业 可以选择:a. File Sys ...

  3. Linux(CentOS7)下远程拷贝文件,scp命令

    一.Linux版本 二.scp命令 scp [参数] [原路径] [目标路径] scp -P 22022 /home/file.war root@192.168.253.172:/home/test ...

  4. 最好用的jQuery-Ajax缓存插件

    AJAX-Cache    最好用的jQuery-Ajax缓存插件 介绍 AJAX-Cache是一款jQuery插件,基于localStorage/sessionStorage实现异步请求缓存功能,并 ...

  5. Ant Design Pro+Electron+electron-builder实现React应用脱离浏览器,桌面安装运行

    ant-design-pro ----> version :2.3.1 由于网上Ant Design Pro+Electron的资料太少,我就贡献一点经验   最近需要讲AntD Pro项目(以 ...

  6. 项目中遇到angular时间插件datetinepicker汉化问题

    问题描述: 测试需要中文的时间插件: 参考资料: angularjs封装bootstrap官网的时间插件datetimepicker https://www.cnblogs.com/cynthia-w ...

  7. 逆向学习-PE文件格式

    从DOS头到节区头是PE头部分,其下的节区合称PE体.文件中使用偏移(offset),内存中使用VA(Virtual Address,虚拟地址)来表示位置.文件加载到内存时,情况就会发生变化(节区的大 ...

  8. 微信内点击链接或扫描二维码可直接用外部浏览器打开H5链接的解决方案

    很多朋友问我怎么解决微信内点击链接或扫描二维码可以直接跳出微信在外部浏览器打开网页链接,其实这并不难,只要我们使用微信跳转浏览器接口实现跳转功能即可. 简单的处理方案 1. 用浏览器打开我们需要用到的 ...

  9. pytorch识别CIFAR10:训练ResNet-34(数据增强,准确率提升到92.6%)

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前一篇中的ResNet-34残差网络,经过减小卷积核训练准确率提升到85%. 这里对训练数据集做数据 ...

  10. MessageDigest类

    public abstract class MessageDigest extends MessageDigestSpi API中的中英文对照简介(未完) java.security.MessageD ...