MyBatis的collection只能查询一条记录

时间:2024-04-01 13:41:26
转自 http://blog.csdn.net/LoveCarpenter/article/details/60958710

1 深坑描述

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

MyBatis的collection只能查询一条记录

我创建的持久化类A:

MyBatis的collection只能查询一条记录

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

MyBatis的collection只能查询一条记录

2 深坑原因

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

MyBatis的collection只能查询一条记录

MyBatis的collection只能查询一条记录

3 深坑解决

如何解决这种问题:

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

  • 修改配置文件为别名

MyBatis的collection只能查询一条记录

MyBatis的collection只能查询一条记录

  • sql语句使用别名查询

MyBatis的collection只能查询一条记录

  • 运行结果正确了

MyBatis的collection只能查询一条记录

4.总结

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

  • Mybatis的映射关系是通过查询出来的别名进行反射的。