mybatis中级联查询后如何处理两个表的相同字段
**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,它没有对应到自己的状态位去。
请问大神们,怎么解决??有遇到过的没呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
已经解决了,多谢各位!
有一篇文章,比较详细:
http://blog.csdn.net/xzm_rainbow/article/details/15336933
这个我只是想学习一下mybatis中的级联查询中的一对多关系,但是结果发现 相同字段的,它就只读了前面的,没有一一对应
建议是员工表关联部门表 而不是部门表中放员工集合 设计表的时候要考虑谁当谁的外键 员工表中添加部门ID作为外键 关联部门表 这样子很好处理两者之间的关系
select status 'd_status' 这样加
别的字段加前缀d_ e_ 为何status不加?加了就解决了
ok了,不仅要在select那把重复字段令别名,还要修改 映射文件,就是把别名与自己的BEAN的属性对应起来,不然的话 会找不到的。
回复
@天涯共明月 :不用,resultMap就是映射使的,property是bean的属性,column是select的属性,所以bean是不用改的
回复
对的,我就是修改的resultMap映射关系,多谢了!
既然是级联查询,两个不同的表相同的字段,那为何不用别名呢:比如select a.status statusa,b.status statusb,我觉得是不是因为你select 后面的参数列表没整清楚,让mybatis认为你的status就是a表的status,与b表没有任何区别。