mysql一对多关联查询

<resultMap id="AssociationResultMap" type="com.wondersgroup.employeeBenefits.core.bases.dto.OrderInfoDto">
<result column="EMP_ID" jdbcType="BIGINT" property="empId" />
<result column="ADDRESSEDID" jdbcType="BIGINT" property="addressedid" />
    <result column="EMP_NAME" jdbcType="VARCHAR" property="empName" />
    <result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" />
    <result column="TOTAL_PRICE" jdbcType="DOUBLE" property="totalPrice" />
    <result column="SCORE_NUM_TOTAL" jdbcType="DOUBLE" property="scoreNumTotal" />
    <result column="CASH_TOTAL" jdbcType="DOUBLE" property="cashTotal" />
    <result column="ORDER_NO" jdbcType="VARCHAR" property="orderNo" />
    <result column="ORDER_STATE" jdbcType="VARCHAR" property="orderState" />
    <result column="PAYMENT_TIME" jdbcType="TIMESTAMP" property="paymentTime" />
    <result column="FINISHED_TIME" jdbcType="TIMESTAMP" property="finishedTime" />
<result column="STATU_NAME" jdbcType="VARCHAR" property="statuName" />
<!-- ofType指定订单中商品对象类型 -->
        <collection column="{orderNo=ORDER_NO,orgId=ORG_ID,orgName=ORG_NAME,goodTypeId=FORM,
        goodId=GOOD_ID,goodName=GOOD_NAME,goodState=GOOD_STATE}" //查询子集用于关联的字段,来源于1参数2,查询出来的父,右边的是父(或父的其他子查询中值)左边的是关联子ofType="com.wondersgroup.employeeBenefits.core.bases.dto.OrderGoodDto" property="goods" select="getGoods" />
</resultMap>


<resultMap id="OrderGoodsResultMap" type="com.wondersgroup.employeeBenefits.core.bases.dto.OrderGoodDto">
<id column="ID" property="id" jdbcType="BIGINT"/>
    <result column="ORDER_NO" property="orderNo" jdbcType="VARCHAR" />
    <result column="GOOD_ID" property="goodId" jdbcType="BIGINT" />
    <result column="GOOD_TYPE_ID" property="goodTypeId" jdbcType="BIGINT" />
    <result column="GOOD_NUM" property="goodNum" jdbcType="INTEGER" />
    <result column="GOOD_NAME" property="goodName" jdbcType="VARCHAR" />
    <result column="GOOD_PRICE" property="goodPrice" jdbcType="DOUBLE" />
    <result column="GOOD_STATE" property="goodState" jdbcType="VARCHAR" />
    <result column="STATU_NAME" jdbcType="VARCHAR" property="statuName" />
    <result column="ORG_NAME" jdbcType="VARCHAR" property="orgName" />
    <result column="FINISHED_TIME" property="finishedTime" jdbcType="TIMESTAMP" />
</resultMap>







<select id="getOrderInfo" parameterType="hashmap" resultMap="AssociationResultMap">
SELECT DISTINCT a.*, #{orgId} AS ORG_ID , #{orgName} AS ORG_NAME ,#{goodId} AS GOOD_ID ,
#{goodTypeId} AS FORM ,#{goodName} AS GOOD_NAME ,#{orderState} AS GOOD_STATE ,(
SELECT e.TITLE FROM YFY_DICT_DATA e WHERE e.ID = a.ORDER_STATE
) as STATU_NAME
FROM YFY_ORDER_INFO a , YFY_ORDER_GOOD g
WHERE a.ORDER_NO = g.ORDER_NO
<if test="goodTypeId!=null and goodTypeId!=''">
AND EXISTS (SELECT 1 FROM YFY_GOODS_INFO good
WHERE good.ID = g.GOOD_ID AND good.FORM = #{goodTypeId})
</if>
<if test="id!=null and id!=''">
AND a.id = #{id}
</if>
</select>

=================
@Table(name = "YFY_ORDER_INFO")
public class OrderInfoDto extends OrderInfo {
private static final long serialVersionUID = -207966556598808986L;

@Transient
private List<OrderGoodDto> goods;

====================

Map<String, Object> paraMap = new HashMap<String, Object>();
// Employee employee = employeeService.getEmployeeByUserId(Long
// .valueOf(userId));
paraMap.put("id", orderId);
OrderInfoDto orderifo = (OrderInfoDto) orderService.getOrderInfo(paraMap);


猜你喜欢

转载自yuhuiblog6338999322098842.iteye.com/blog/2258693