MyBatis的collection只能查询一条记录

转自 http://blog.csdn.net/LoveCarpenter/article/details/60958710

1 深坑描述

      我数据库中有三张表,暂且记作 表A,表B,表C,他们之间的关系如下图所示:

这里写图片描述

我创建的持久化类A:

这里写图片描述

当我进行数据库查询的时候,执行的SQL语句是没有问题的,但是worktreatises两个集合总是只有一个数据(按理说work里面应该有3个数据,treatises应该有4个数据)

这里写图片描述

2 深坑原因

产生这种问题的原因,是因为两个数据库的主键都叫做id:如下图

这里写图片描述

这里写图片描述

3 深坑解决

如何解决这种问题:

  • 在Mybatis的配置文件中添加使用别名(注意sql语句也要用别名)
  • 我们修改的只是配置文件,数据库不要改变(注意:数据库不要改变)

  • 修改配置文件为别名

这里写图片描述

这里写图片描述

  • sql语句使用别名查询

这里写图片描述

  • 运行结果正确了

这里写图片描述

4.总结

      通过这个坑我们可以看出来:

  • Mybatis的映射关系是通过查询出来的别名进行反射的。
  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值