1 深坑描述
我数据库中有三张表,暂且记作 表A,表B,表C,他们之间的关系如下图所示:
我创建的持久化类A:
当我进行数据库查询的时候,执行的SQL语句是没有问题的,但是work
和treatises
两个集合总是只有一个数据(按理说work
里面应该有3个数据,treatises
应该有4个数据)
2 深坑原因
产生这种问题的原因,是因为两个数据库的主键都叫做id:如下图
3 深坑解决
如何解决这种问题:
- 在Mybatis的配置文件中添加使用别名(注意sql语句也要用别名)
-
我们修改的只是配置文件,数据库不要改变(注意:数据库不要改变)
-
修改配置文件为别名
- sql语句使用别名查询
- 运行结果正确了
4.总结
通过这个坑我们可以看出来:
- Mybatis的映射关系是通过查询出来的别名进行反射的。