<!--主表映射-->
<resultMap type="MallOrder" id="MallOrderResult">
<result property="orderNo" column="order_no" />
<result property="memberId" column="member_id" />
<result property="merchantId" column="merchant_id" />
......
</resultMap>
<sql id="selectMallOrderVo">
select order_no, member_id, merchant_id, goods_amount from mall_order
</sql>
1.连接查询方式
<select id="selectMallOrderNestedList" parameterType="MallOrder" resultMap="MallOrderListNestedResult">
select
a.id, a.name, a.brand_id,
b.id as sub_id
from mall_goods a
left join mall_goods_sku b on b.goods_id = a.id
where a.id = #{id}
</select>
结果
<resultMap id="MallOrderListNestedResult" type="MallOrder" extends="MallOrderResult">
<collection property="children" notNullColumn="sub_id" javaType="java.util.List" resultMap="OrderDetailResult" />
</resultMap>
子表映射
<resultMap type="MallOrderDetail" id="OrderDetailResult">
<result property="id" column="sub_id" />
<result property="orderId" column="sub_order_id" />
<result property="memberId" column="sub_member_id" />
<result property="merchantId" column="sub_merchant_id" />
<result property="goodsId" column="sub_goods_id" />
<result property="goodsName" column="sub_goods_name" />
<result property="goodsImage" column="sub_goods_image" />
</resultMap>
2.子查询方式
执行查询
<select id="selectMallOrderNestedList" resultMap="MallOrderNestedResult" parameterType="MallGoods">
<include refid="selectMallOrderVo"/>
<where></where>
</select>
<!--增加主表包含详情集合的映射-->
<resultMap type="MallOrder" id="MallOrderNestedResult" extends="MallOrderResult">
<collection property="children" select="selectDetailsByOrderNo" column="order_no"/>
</resultMap>
<!--子表映射-->
<resultMap type="MallOrderDetail" id="OrderDetailResult">
<result property="id" column="id" />
<result property="orderId" column="order_id" />
<result property="memberId" column="member_id" />
<result property="merchantId" column="merchant_id" />
<result property="goodsId" column="goods_id" />
<result property="goodsName" column="goods_name" />
<result property="goodsImage" column="goods_image" />
</resultMap>
使用selectDetailsByOrderNo 指向一个新查询去填充子集
<select id="selectDetailsByOrderNo" resultType="com.join.mall.domain.MallOrderDetail" resultMap="OrderDetailResult">
SELECT * from mall_order_detail where order_no = #{order_no}
</select>