SQL-MyBatis級聯查詢

列表中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>

查詢結果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章