Mybatis中的动态SQL标签之include

<include> include可以把大量的重复代码整理起来,当使用的时候直接include即可,减少重复代码的编写。这里是将太长的语句拆分出来,本质是一样的

  <!-- 查询促销活动列表 -->
    <sql id="selectPromotionFields">
        SELECT id,
               channel,
               1 AS promotionType,
               NAME,
               promotion_code AS promotionSn,
               knuma AS promotionKnuma,
               start_time,
               end_time,
               STATUS,
               create_by,
               create_time,
               update_time
        FROM eb_promotion
        WHERE audit_status = 1 AND datastatus = 1
    </sql>
   
   

 <!-- 查询福袋活动列表 -->
    <sql id="selectBlessBagPromotionFields">
        SELECT bagPromotion.id,
               1202                     AS channel,
               2                        AS promotionType,
               bagPromotion.NAME,
               bagPromotion.promotion_sn AS promotionSn,
               bagPromotion.promotion_knuma AS promotionKnuma ,
               min(bagBatch.start_time) AS start_time,
               max(bagBatch.end_time)   AS end_time,
               bagPromotion.STATUS,
               bagPromotion.create_by,
               bagPromotion.create_time,
               bagPromotion.update_time
         FROM eb_blessing_bag_promotion bagPromotion
              LEFT JOIN eb_blessing_bag_batch bagBatch ON bagBatch.blessing_bag_id =             
              bagPromotion.id
        WHERE bagPromotion.audit_status = 1 AND bagPromotion.datastatus = 1
        GROUP BY bagPromotion.id
    </sql>

下面将上述两个整合

<select id="queryPromotionAndBlessBagPromotionList"
	resultType="com.yyx.common.response.promotion.PromotionResponse">
    SELECT * FROM (
    <include refid="selectPromotionFields"/>
    UNION ALL
    <include refid="selectBlessBagPromotionFields"/>
    ) prom
    <where>
	    <if test="channel != null and channel != ''">
		    AND prom.channel = #{channel}
	    </if>
	    <if test="name != null and name != ''">
		    AND prom.name LIKE CONCAT('%', #{name} '%')
	    </if>
	    <if test="promotionSn != null and promotionSn != ''">
		    AND prom.promotionSn LIKE CONCAT('%', #{promotionSn} '%')
	    </if>
    	<if test="startTime!=null and startTime!='' and endTime != null and endTime != ''">
		    AND GREATEST(prom.start_time, #{startTime}) &lt;= LEAST(prom.end_time, #    
           {endTime})
	    </if>
    </where>
    ORDER BY prom.create_time DESC
</select>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值