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

  • 相关阅读:
    利用django form 模块处理post请求
    linux 下安装JDK
    java常用日期操作方法
    Git常见命令整理
    使用Java实现八种基本排序
    java验证类ValidUtils
    封装一个既能遍历数组又能遍历对象的的forEach函数
    结合canvas做雨滴特效
    前端常用js脚本
    canvas 视频音乐播放器
  • 原文地址:https://www.cnblogs.com/ymzh/p/8989395.html
Copyright © 2011-2022 走看看