发布网友 发布时间:2天前
共1个回答
热心网友 时间:2分钟前
嵌套查询与嵌套结果在MyBatis中的区别主要体现在执行数据库查询的次数上。嵌套查询是针对关联的嵌套查询,会得到一个结果集,然后根据每条记录执行关联查询。这意味着,如果查询结果集返回N条记录,关联查询将会执行N次,再加上自身返回结果集查询1次,总共需要访问数据库N+1次。这种情况下,如果N的值较大,数据库访问的消耗将会非常显著,从而可能影响性能。
相比之下,嵌套结果则是MyBatis处理一对多、多对多以及多对一查询的方式。它通过联合查询,一次性从数据库中获取所有结果,然后根据一对一、一对多、多对多的关系,结合ResultMap中的配置,对结果进行转换。
在实现一对一、一对多、多对多的映射时,有以下规则:
● 一对一:在任意一方引入对方主键作为外键;
● 一对多:在“多”的一方,添加“一”的一方的主键作为外键;
● 多对多:通过生成中间关系表,引入两张表的主键作为外键,两个主键成为联合主键或使用新的字段作为主键。
在映射过程中,使用property指定映射到的实体类对象属性,与表字段一一对应;使用column指定表中对应的字段。
个人学习记录一下下!!