mybatis多对多的问题汇总

举报
tea_year 发表于 2021/12/22 23:55:15 2021/12/22
【摘要】 1.只显示地址,不显示内容: 结果显示 @Test public void searchUserRole(){ List<User>list=userDao.searchUserRole(); for(User u:list){ ...

1.只显示地址,不显示内容:

结果显示


  
  1. @Test
  2. public void searchUserRole(){
  3. List<User>list=userDao.searchUserRole();
  4. for(User u:list){
  5. System.out.println(u);
  6. System.out.println("\t\t"+u.getRoles());
  7. }
  8. }

 查看代码发现没有问题,难道是实体类的原因?

后来发现实体类少了重写ToString()方法:


  
  1. @Override
  2. public String toString() {
  3. return "Role{" +
  4. "id=" + id +
  5. ", name='" + name + '\'' +
  6. ", desc='" + desc + '\'' +
  7. ", users=" + users +
  8. '}';
  9. }

但是还是有问题,如下,名字重复:

原因在于user表和role表有字段名重复:


  
  1. <resultMap id="userRoleMap" type="com.aaa.entity.User">
  2. <!--主键字段对应的属性;property:实体类属性;column:数据库列名-->
  3. <id property="id" column="id"></id>
  4. <!--非主键字段-->
  5. <result property="name" column="name"></result>
  6. <result property="birth" column="birth"></result>
  7. <result property="gender" column="gender"></result>
  8. <result property="address" column="address"></result>
  9. <!--建立了一对多关系之后,需要继续-->
  10. <collection property="roles" ofType="role">
  11. <id property="id" column="id"></id>
  12. <result property="name" column="name"></result>
  13. <result property="desc" column="desc"></result>
  14. </collection>
  15. </resultMap>

 原来的sql语句:

SELECT u.*,r.*
FROM user u left JOIN user_role ur on u.id=ur.uid
left JOIN role r on ur.rid=r.id

使用别名之后:


  
  1. <select id="searchUserRole" resultMap="userRoleMap">
  2. SELECT u.*,r.id rid,r.name rname,r.desc
  3. FROM user u left JOIN user_role ur on u.id=ur.uid
  4. left JOIN role r on ur.rid=r.id
  5. </select>

 

再看执行效果:

最终结果正常!

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/104104899

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。