【Mybatis】解决一对多映射结果集Collection重复项出错问题

时间:2024-05-23 14:13:59

问题场景描述:

现在有实体类Goods、Orders,分别表示商品与订单,是典型的多对多关系。
除了两个实体对应的表之外,另加关系表Goods_Orders,字段如下:
【Mybatis】解决一对多映射结果集Collection重复项出错问题
其中count表示某订单中某商品的数量。

定义Orders的ResultMap如下:
【Mybatis】解决一对多映射结果集Collection重复项出错问题

现查询Order时,出现问题:返回的goodsCount列表应存储商品id对应的数量,但是当有count值相同时,返回的List会自动去重,造成goodsList与countList不对应的现象,程序报错。

解决方案:

将Collection中的result移动到collection本身column属性:
【Mybatis】解决一对多映射结果集Collection重复项出错问题
这样countList结果集就不会去重了。

原理:

collection的column表示关联主键ID,不会被去重。