zoukankan      html  css  js  c++  java
  • Mybatis多表链接查询重复字段问题

    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不同他就会认为你是不同的元素,这个错误在很多人看来很简单就解决了我却头疼了好长时间,网上没有找到解决办法,所以写这篇文章希望给和我一样的朋友一点帮助

  • 相关阅读:
    YUM安装MySQL 8.0
    linux 设置 别名 全局命令
    2018.3.12校内互测总结-生成函数-bitset-二次剩余
    Dirichlet 前缀和与快速莫比乌斯变换(FMT)
    CSP-S2 赛后总结
    概率和期望
    【题解】[洛谷 P4396 / bzoj 3236] 作业【莫队 分块 根号平衡】
    【题解】[LOJ 2736] 「JOISC 2016 Day 3」回转寿司【分块 堆】
    【题解】[UOJ 228] 基础数据结构练习题【线段树 均摊数据结构】
    【题解】[Codeforces 438D] The Child and Sequence【线段树 均摊数据结构】
  • 原文地址:https://www.cnblogs.com/ymzh/p/8989395.html
Copyright © 2011-2022 走看看