使用resultMap實現ibatis複合資料結構查詢(1.多重屬性查詢;2.屬性中含有列表查詢)

來源:互聯網
上載者:User

標籤:ibatis   select   


以訂單為例,直接上代碼:


1.多重屬性查詢


java實體

public class OrderDetail {    @XmlElement(required = true)    protected String orderSn;    @XmlElement(required = true)    protected String orderAmount;    @XmlElement(required = true)    protected String orderStatus;    @XmlElement(required = true)    protected String orderAddTime;    @XmlElement(required = true)    protected Logistics logistics;    @XmlElement(required = true)    protected OrderGoods orderGoods;    @XmlElement(required = true)    protected List<OrderDetail> listData;
        ... getter  setter...
}


class="orderDetail" 即為上面的類,有個屬性logistics的類型是複合類型Logistics


<resultMap id="OrderInfoMap" class="orderDetail"><result property="orderSn" column="orderSn"/><result property="orderAmount" column="orderAmount"/><result property="orderStatus" column="orderStatus"/><result property="orderStatus" column="orderAddTime"/><result property="logistics.consignee" column="consignee"/><!--  <result property="logistics.receiver" column="receiver"/> --><result property="logistics.country" column="country"/><result property="logistics.province" column="province"/><result property="logistics.city" column="city"/><result property="logistics.district" column="district"/><result property="logistics.address" column="address"/><result property="logistics.mobile" column="mobile"/><result property="logistics.shippingName" column="shippingName"/><result property="orderGoods.listData" select="wxShopOrder.getOrderGoodsList"         column="orderSn"/></resultMap>


sql查詢語句如下:

   <select id="getOrderDetail" parameterClass="string" resultMap="OrderInfoMap" >       select                    order_sn as orderSn,                  order_amount as orderAmount,                  order_status as orderStatus,                  add_time as orderAddTime,                  consignee,                  country,                                           b.region_name province,                  c.region_name city,                  d.region_name district,                  address,                  mobile,                  shipping_name as shippingName                  from  ecs_order_info  o  left join ecs_region b on o.province=b.region_id          left join ecs_region c on o.city=c.region_id          left join ecs_region d on o.district=d.region_id   where  order_sn=#orderSn#        </select>



2.屬性中含有列表查詢


orderDetail有個屬性orderGoods的類型是List複合類型,應在resultMap的屬性定義中給這個list做查詢 :getOrderGoodsList

<result property="orderGoods.listData" select="wxShopOrder.getOrderGoodsList" column="orderSn"/>

看下這個查詢  getOrderGoodsList

 <!-- 通過訂單號擷取訂單商品列表 -->        <select id="getOrderGoodsList" parameterClass="string" resultMap="orderGoodsMap">            select goods_name as goodsName,                   goods_number as goodsNumber            from ecs_order_goods where order_id=       (select order_id from ecs_order_info where order_sn=#orderSn#)        </select>

返回結果也是一個resultMap  -- orderGoodsMap


<resultMap id="orderGoodsMap" class="com.uid.trace.module.sale.schema.OrderGoods"><result property="goodsName" column="goodsName"/><result property="goodsNumber" column="goodsNumber"/></resultMap>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.