列表中item也存在列表的情況下使用,比如查詢多個訂單,每個訂單又有多個商品。要實現這種可以先查詢訂單列表,然後遍歷每個訂單根據訂單號再查詢訂單商品,第二種方法就是級聯查詢,即通過SQL實現。
如需求:查詢訂單列表,每個訂單有訂單基本信息、商家名稱、頭像、多個商品
1.先實現根據訂單號查詢商品列表:
商品實體:
public class OrderListGoods {
private String goodsId;
private String goodsName;
private String goodsDesc;
private String goodsImageUrl;
private int goodsCoins;
private int goodsPrice;
....
//set get方法省略
}
Mapper.java
public interface OrderGoodsMapper {
List<OrderListGoods> selectGoodsListByOrderNo(@Param("orderNum")String orderNum);
}
Mapper.xml
<select id="selectGoodsListByOrderNo" resultType="com.streamlet.pojo.resultdto.OrderListGoods">
SELECT
goods_id as goodsId,
goods_name as goodsName,
goods_desc as goodsDesc,
pics as goodsImagePics,
original_coins as coins,
original_price as prices
FROM order_goods
WHERE order_no=#{orderNum}
</select>
2.編寫查詢訂單列表
訂單實體:
public class OrderListBean {
private String orderNo;
private String salerId;
private Integer orderPrice;
private Integer orderCoins;
private Integer orderStatus;
private String salerName;
private String salerAvatar;
private Date createTime;
private List<OrderListGoods> goodsList;
...
//set get方法省略
}
Mapper.java
public interface OrderMapper {
List<OrderListBean> searchOrderList(String buyId);
}
Mapper.xml
<select id="searchOrderList" resultMap="UserOrderGoodsMap" parameterType="java.lang.String" >
select
_order.order_no as orderNo,
_order.saler_id as salerId,
usr.name as salerName,
usr.headimg as salerAvatar,
_order.order_price as orderPrice,
_order.order_coins as orderCoins,
_order.order_status as orderStatus,
_order.create_time as createTime
from `order` _order
INNER JOIN baseuser usr ON _order.saler_id=usr.user_id
where _order.buyer_id=#{buyId}
</select>
<resultMap id="UserOrderGoodsMap" type="com.streamlet.pojo.OrderListBean">
<result property="orderNo" column="orderNo" />
<result property="salerId" column="salerId" />
<result property="salerName" column="salerName" />
<result property="salerAvatar" column="salerAvatar" />
<result property="orderPrice" column="orderPrice" />
<result property="orderCoins" column="orderCoins" />
<result property="orderStatus" column="orderStatus" />
<result property="createTime" column="createTime" />
<association property="goodsList"
select="com.streamlet.mapper.OrderGoodsMapper.selectGoodsListByOrderNo" column="orderNo">
</association>
</resultMap>
查詢結果如下: