MyBatis的collection集合中只能取到一条数据的解决办法

在三表查询时,我的collection集合还能获取到一条数据,找了3小时,最终发现是因为主键名重复(我sql查询语句中第二个表没有写主键,导致我忽略了主键不能重复),还是之前犯过的错误,细微且致命!

一:原代码:

我的Mapper映射如下:
在这里插入图片描述
三表查询select标签如下:

   <select id="selectOrder" resultMap="orderMap">
 		select d_order.*,orderItem.count,orderItem.amount, book.book_name,book.Dangprice,book.product_image  from  d_order  left join order_item orderItem on d_order.id=orderItem.order_id left join d_book book on book.book_id=orderItem.product_id where d_order.user_id=1 order by d_order.ordertime desc
    </select>

二、修改后的代码:

映射不变,只需给主键名字重复起别名即可,修改sql语句如下:

   <select id="selectOrderById" resultMap="orderMap">
        select d_order.*,order_item.id order_item_id,order_item.count count,order_item.amount,d_book.book_name,d_book.Dangprice,d_book.product_image from  d_order left join order_item on d_order.id=order_item.order_id left join d_book on d_book.book_id=order_item.product_id where d_order.id=#{
    
    orderId}
    </select>

三、总结

任何细小的过失都要付出沉重的代价!!

Guess you like

Origin blog.csdn.net/qq_43521500/article/details/120877456