The <if> tag in Mybatis determines that the string is equal to a certain value

<if test="flag != null and flag!='' and flag=='1'.toString()">
      sql语句
 </if>

<if test="warehousingType!= null and warehousingType!='' and warehousingType=='0'.toString()">
    and a.id in(SELECT
    return_order_id
    FROM
    dwd_return_order_detail
    GROUP BY
    return_order_id
    HAVING
    SUM(storage_quantity) = 0)
</if>

<if test="warehousingType!= null and warehousingType!='' and warehousingType=='1'.toString()">
    and a.id in(SELECT
    return_order_id
    FROM
    dwd_return_order_detail
    GROUP BY
    return_order_id
    HAVING
    SUM(storage_quantity) > 0 AND SUM(storage_quantity) &lt; SUM(quantity))
</if>

<if test="warehousingType!= null and warehousingType!='' and warehousingType=='2'.toString()">
    and a.id in(
    SELECT
    return_order_id
    FROM
    dwd_return_order_detail
    GROUP BY
    return_order_id
    HAVING
    SUM(storage_quantity) = SUM(quantity))
</if>

complete sql

<select id="queryAfterSalesOrderInfos" resultMap="DwdReturnOrderMap">
    select
    a.id, a.create_date, a.create_user_name, a.code, a.approve_user, a.approve_date, a.audit_user, a.audit_date, a.express_no, a.express_name, a.member_name, a.member_code, a.store_name, a.warehouse_in_code, a.warehouse_in_name, a.warehouse_out_code, a.warehouse_out_name, a.status, a.trade_id, a.sales_order_code, a.return_order_type_code, a.return_order_type_name, a.mobile, a.consignee_name, a.consignee_address, a.tag_name, a.dispatch_order_id, a.dispatch_order_code, a.is_obsolete, a.amount_actual, a.is_cod, a.is_abnormal, a.is_quick_refund, a.is_refund, a.cai_niao_order_id, a.note, a.message, a.return_style, a.offset_amount, a.notice_code, a.sales_order_id, a.is_prime, a.is_create_noticed, a.distribution_trade_id, a.is_replace, ali_pay_no, a.quantity, a.is_electronicInvoice_created, a.is_push, a.shopping_guide, a.refund_way, a.scan_time, a.scan_user, a.province_name, a.city_name, a.county_name, a.national_name, a.national_code, a.province_code, a.city_code, a.county_code, a.storage_status, a.version, a.expense_sales_order_id, a.expense_sales_order_code, a.out_code, a.is_accounted, a.out_sales_order_code, a.trade_status, a.complete_date, a.modify_date, a.is_create_out_bound, a.is_associated, a.quality_status, a.is_repair, a.manual_association, a.is_modification_address, a.street, a.is_receipt_association, a.relation_status, a.carton_number,
    CASE
    WHEN ( SELECT count(*) FROM dwd_return_order_detail WHERE return_order_id = a.id GROUP BY return_order_id HAVING SUM( storage_quantity ) = 0 ) > 0 THEN '0'
    WHEN ( SELECT count(*) FROM dwd_return_order_detail WHERE return_order_id = a.id GROUP BY return_order_id HAVING SUM(storage_quantity) > 0 AND SUM(storage_quantity) &lt; SUM(quantity) ) > 0 THEN '1'
    WHEN ( SELECT count(*) FROM dwd_return_order_detail WHERE return_order_id = a.id GROUP BY return_order_id HAVING SUM(storage_quantity) = SUM(quantity) ) > 0 THEN '2'
    END  warehousingType,
    b.refund_status,b.trans_type
    from dwd_return_order a  left join dwd_sales_order b on a.sales_order_id = b.order_id
    where
    1=1
    <if test="code != null and code != ''">
     and a.code = #{code}
    </if>
    <if test="tradeIds !=null and tradeIds.size() > 0">
     and a.trade_id in(
        <foreach item="item" index="index" collection="tradeIds" separator=",">
            #{item}
        </foreach>
        )
    </if>
    <if test="salesOrderCode !=null and salesOrderCode !=''">
     and  a.sales_order_code = #{salesOrderCode}
    </if>
    <if test="expressNos !=null and expressNos.size() > 0">
     and a.express_no in (
        <foreach item="item" index="index" collection="expressNos" separator=",">
            #{item}
        </foreach>
        )
    </if>
    <if test="storeNames !=null and storeNames.size() > 0">
     and a.store_name in (
        <foreach item="item" index="index" collection="storeNames" separator=",">
            #{item}
        </foreach>
        )
    </if>
    <if test="note !=null and note != ''">
        and a.note LIKE CONCAT ('%',#{note},'%')
    </if>
    <if test="sku !=null and sku != ''">
        and a.id in(select distinct(n.return_order_id) from dwd_return_order_detail n where n.sku_code = #{sku})
    </if>
    <if test=" refundStatus !=null and refundStatus.size() > 0">
        and b.refund_status in(
        <foreach item="item" index="index" collection="refundStatus" separator=",">
            #{item}
        </foreach>
        )
    </if>

    <if test="warehousingStartTime !=null ">
        and a.modify_date >= #{warehousingStartTime}
    </if>
    <if test="warehousingEndTime !=null ">
        <![CDATA[AND a.modify_date <= #{warehousingEndTime}]]>
    </if>
    <if test="warehousingType!= null and warehousingType!='' and warehousingType=='0'.toString()">
        and a.id in(SELECT
        return_order_id
        FROM
        dwd_return_order_detail
        GROUP BY
        return_order_id
        HAVING
        SUM(storage_quantity) = 0)
    </if>

    <if test="warehousingType!= null and warehousingType!='' and warehousingType=='1'.toString()">
        and a.id in(SELECT
        return_order_id
        FROM
        dwd_return_order_detail
        GROUP BY
        return_order_id
        HAVING
        SUM(storage_quantity) > 0 AND SUM(storage_quantity) &lt; SUM(quantity))
    </if>

    <if test="warehousingType!= null and warehousingType!='' and warehousingType=='2'.toString()">
        and a.id in(
        SELECT
        return_order_id
        FROM
        dwd_return_order_detail
        GROUP BY
        return_order_id
        HAVING
        SUM(storage_quantity) = SUM(quantity))
    </if>
    order by a.create_date desc
    <if test="pageSize != 0">
        LIMIT #{offset},#{pageSize}
    </if>

</select>

Guess you like

Origin blog.csdn.net/weixin_43167662/article/details/130055134