使用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>
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>
相关文章推荐
- ibatis简单实现与配置
- Mybatis与Ibatis的区别
- java Hibernate 一对多自身关联问题
- The error occurred while applying a result map.
- ibatis 的缓存
- ibatis 简单使用
- Mapped Statements collection does not contain
- Hibernate上路_12-一对多表单操作
- 简单实现ibatis的物理分页
- ibatis加memcached缓存
- ibatis 高速缓存
- 最近在用ibatis,发些文章来学习下
- 学习ibatis,参照夏晰翻译的ibatis2.0学习指南
- 从IBatis2.X 移植到IBatis3.0 sqlMapConfig and sqlMap XML 配置文件升级说明
- iBATIS教程之快速入门浅析
- struts2.1.8+mybatis3.0+spring3.0(全注解)小例子
- iBatis2--SqlMap的配置总结
- ibatis 动态Sql
- Hibernate和ibatis在同一个webapp中混合使用在spring中的配置方法
- How to use custom type handler (typeHandler) in ibatis 2.3.4