您的位置:首页 > 其它

使用ibatis返回复合对象(一对多)

2016-07-11 18:46 369 查看
1.定义订单对象(domain或者POJO)

public class DailySalesOrderModel {
private String freighter = " "; /*送货人*/
private String fullAddress = " "; /* 完整地址*/
private List<OrdOrderDetail> orderDetails = new ArrayList<OrdOrderDetail>();/*订单明细*/
private String actualAmount = ""; /* 实际结算金额*/
private String debtAmount = " "; /* 欠款金额*/
private String payMethod = " "; /* 支付方式*/
private String freightNo = " "; /* 货运单号*/
private String patientName = " "; /* 患者名称*/
private String digest="";/*摘要*/

//省略get和set方法

}

2.定义sqlMap

2.1 销售订单sql

标红的语句比较关键

<resultMap id="resultOrderInfo" class="com.baosight.b2c.yo.domain.DailySalesOrderModel">
<result property="freighter" column="FREIGHTER"/>
<result property="fullAddress" column="FULL_ADDRESS"/>
<result property="orderDetails" column="{orderId=ID}" select="YO0101.queryOrderDetail"/>
<result property="actualAmount" column="ACTUAL_AMOUNT"/>
<result property="payMethod" column="PAY_METHOD"/>
<result property="freightNo" column="EBS_ORDER_NO"/>
<result property="patientName" column="PATIENT_NAME"/>
</resultMap>

2.2 销售明细sql

<resultMap id="resultOrderDetail" class="com.yiyaobao.b2c.common.order.domain.OrdOrderDetail">
<result property="sku" column="SKU"/>
<result property="medName" column="MED_NAME"/>
<result property="commonName" column="COMMON_NAME"/>
<result property="amount" column="AMOUNT"/>
</resultMap>

2.3 查询主表sql

<select id="exportDailySalesList" parameterClass="java.util.HashMap"
resultMap="resultOrderInfo">
SELECT
DISTINCT
oo.ID,
oo.FREIGHTER, <!-- 送货员 -->
oo.FULL_ADDRESS, <!-- 完整地址 -->
oo.ACTUAL_AMOUNT, <!-- 实际结算金额 -->
CASE oo.PAY_METHOD
WHEN '01' THEN
'现金'
WHEN '02' THEN
'刷卡'
WHEN '11' THEN
'银联'
WHEN '12' THEN
'网上银行'
WHEN '13' THEN
'微信'
WHEN '14' THEN
'支付宝'
WHEN '21' THEN
'金融支付'
END as "PAY_METHOD", <!-- 支付方法(01-现金;02-刷卡;11-银联;12-网上银行) -->
oo.EBS_ORDER_NO, <!-- EBS订单号 -->
oo.PATIENT_NAME <!-- 患者名称 (备注)-->
FROM (yiyao_b2c.ord_order as oo LEFT JOIN yiyao_user.usr_user as usr ON oo.USER_ID = usr.ID
left join yiyao_b2c.ord_order_detail as oodtl on oo.id = oodtl.ORDER_ID)
LEFT JOIN yiyao_prs.prs_prescription_app as prsapp ON oo.ID=prsapp.ORDER_ID
WHERE 1=1 and oo.IS_DELETE=0

</select>

2.4 查询明细

<select id="queryOrderDetail" parameterClass="java.util.HashMap"
resultMap="resultOrderDetail">
SELECT
SKU, <!-- SKU -->
MED_NAME, <!-- 药品名称 -->
COMMON_NAME, <!-- 药品通用名 -->
AMOUNT <!-- 数量 -->
FROM yiyao_b2c.ord_order_detail WHERE 1=1
<isNotEmpty prepend=" AND " property="id">
ID = #id#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="orderId">
ORDER_ID = #orderId#
</isNotEmpty>
</select>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息