mybatis中级联查询后如何处理两个表的相同字段

天涯共明月 发布于 2017/03/24 09:36
阅读 912
收藏 1

**mybatis中级联查询后如何处理两个表的相同字段**

现在出来了一个问题:我级联查询出来后,放置一个在Dept中,发现其中List中的employee对象中的status它直接是Dept的内容,并没有去找自己的内容。


部门:

public class Dept {
	
	private Integer id ;
	private String name ;
	private String address ;
	private String status ; //状态位
	
	private List<Employee> employees ;
	}


 

员工:

public class Employee {
	
	private int id ;
	private String name;
	private String address ;
	private String status ; //状态位
}

 

 

级联映射表:

<resultMap type="Dept" id="resultDeptMap">
        <result property="id" column="d_id" />
        <result property="name" column="d_name" />
        <result property="address" column="d_address" />
        <result property="status" column="status" />
        
        <!-- 一对多 List 列表 
            collection:对关联查询到的多条记录映射到集合中
        -->
        <collection property="employees" ofType="com.wm.mybatis.POJO.Employee" column="d_id" >
            <id property="id" column="e_id" javaType="int" jdbcType="INTEGER"/>
            <result property="name" column="e_name" javaType="string" jdbcType="VARCHAR"/>
            <result property="address" column="e_address" javaType="string" jdbcType="VARCHAR"/>
            <result property="d_id" column="d_id" javaType="int" jdbcType="INTEGER"/>
            <result property="status" column="status" />
        </collection>
        
    </resultMap>  


 


查询出来的结果:List<Employee>中Employee的status状态都是Dept的status,它没有对应到自己的状态位去。


请问大神们,怎么解决??有遇到过的没呢?


 

加载中
0
君临119

既然是级联查询,两个不同的表相同的字段,那为何不用别名呢:比如select a.status statusa,b.status statusb,我觉得是不是因为你select 后面的参数列表没整清楚,让mybatis认为你的status就是a表的status,与b表没有任何区别。

天涯共明月
天涯共明月
回复 @风翔飞 : 对的,我就是修改的resultMap映射关系,多谢了!
风翔飞
风翔飞
回复 @天涯共明月 :不用,resultMap就是映射使的,property是bean的属性,column是select的属性,所以bean是不用改的
天涯共明月
天涯共明月
ok了,不仅要在select那把重复字段令别名,还要修改 映射文件,就是把别名与自己的BEAN的属性对应起来,不然的话 会找不到的。
0
风翔飞
风翔飞

别的字段加前缀d_  e_ 为何status不加?加了就解决了

风翔飞
风翔飞
select status 'd_status' 这样加
0
天空丶C
天空丶C

建议是员工表关联部门表  而不是部门表中放员工集合  设计表的时候要考虑谁当谁的外键  员工表中添加部门ID作为外键  关联部门表 这样子很好处理两者之间的关系

天涯共明月
天涯共明月
这个我只是想学习一下mybatis中的级联查询中的一对多关系,但是结果发现 相同字段的,它就只读了前面的,没有一一对应
0
天涯共明月
天涯共明月

已经解决了,多谢各位!

有一篇文章,比较详细:

http://blog.csdn.net/xzm_rainbow/article/details/15336933

 

返回顶部
顶部