记一次springboot+mybatis+phoenix在代码集成中的坑

记一次springboot+mybatis+phoenix在代码集成中的坑

场景:

希望使用phoenix做查询服务,给服务端提供接口

设计:

通过springboot做restful的接口发布,通过mybatis做phoenix的sql处理,因此是springboot+mybatis+phoenix的集成方案;

但是会遇到一个坑!

=========================================我是华丽的分割线=====================================================

先简单汇报下场景:

做网约车的预约单查询处理,如图:

记一次springboot+mybatis+phoenix在代码集成中的坑

这里面需要使用一个时间窗口查询6种时间:推送订单时间、有效抢单时间、抢单成功时间、取消订单时间、达到目的地时间、支付时间

这里可能遇到一个问题:跨天支付!

因此为了解决跨天支付,需要在处理好的基表基础上做6次查询 ,分别对应不同的查询时间,然后做union处理,最后在求和(注意:就是在最后在求和的地方出错!!!!!)

先看下有问题的代码:

记一次springboot+mybatis+phoenix在代码集成中的坑记一次springboot+mybatis+phoenix在代码集成中的坑
<select id="searchContext" resultType="com.df.entity.SearchInfo">
        SELECT
        TB."driver_id",
        TB."driver_name"",
        TB."mobile",
        TB."alliance_name",
        TB."register_city",
        TB."driver_type",
        SUM(TB."pushOrderNum") AS "pushOrderNum" ,
        SUM(TB."effectiveSlogan") AS "effectiveSlogan",
        SUM(TB."grab_sus_order") AS "grab_sus_order",
        SUM(TB."cancel_order_num") AS "cancel_order_num",
        SUM(TB."cancel_passenger_num") AS "cancel_passenger_num",
        SUM(TB."cancel_driver_num") AS "cancel_driver_num",
        SUM(TB."cancel_service_num") AS "cancel_service_num",
        SUM(TB."destination_reached_num") AS "destination_reached_num",
        SUM(TB."pay_num") AS "pay_num",
        SUM(TB."order_cumulative_num") AS "order_cumulative_num",
        SUM(TB."order_pay_cumulative_num") AS "order_pay_cumulative_num"
        FROM
        (
        SELECT
        "driver_id" ,
        "driver_name" ,
        "mobile" ,
        "alliance_name" ,
        "register_city" ,
        "driver_type" ,
        sum(to_number("pushOrderNum")) AS "pushOrderNum" ,
        sum(0) AS "effectiveSlogan" ,
        sum(0) AS "grab_sus_order" ,
        sum(0) AS "cancel_order_num",
        sum(0) AS "cancel_passenger_num",
        sum(0) AS "cancel_driver_num",
        sum(0) AS "cancel_service_num" ,
        sum(0) AS "destination_reached_num" ,
        sum(0) AS "pay_num" ,
        sum(0) AS "order_cumulative_num",
        sum(0) AS "order_pay_cumulative_num"
        FROM
        "_crontab_reservation"
        WHERE
        CASE WHEN "pushOrderTime" != '0' THEN
        TO_DATE("pushOrderTime",'yyyy-MM-dd') >= TO_DATE(#{start_time},'yyyy-MM-dd')
        AND
        TO_DATE("pushOrderTime",'yyyy-MM-dd') <= TO_DATE(#{end_time},'yyyy-MM-dd')
        ELSE 1=1 END
        <if test="driver_id != null and driver_id !=''" >
            and "driver_id"= #{driver_id}
        if>
        <if test="driver_name != null and driver_name !=''" >
            and "driver_name" = #{driver_name}
        if>
        <if test="mobile != null and mobile !=''" >
            and "mobile" = #{mobile}
        if>
        <if test="alliance_name != null and alliance_name !=''" >
            and "driver_management_id" = #{alliance_name}
        if>
        <if test="register_city != null and register_city !=''" >
            and substr("register_city" , 0 , 4) = substr(#{register_city} , 0 , 4)
        if>
        <if test="driver_type != null and driver_type !=''" >
            and "driver_type" = #{driver_type}
        if>
        GROUP BY
        "driver_id" ,
        "driver_name" ,
        "mobile" ,
        "alliance_name" ,
        "register_city" ,
        "driver_type"
    union all

    SELECT
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pushOrderNum</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span>)) AS <span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>grab_sus_order</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_order_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_service_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>destination_reached_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pay_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span><span>
    FROM
    </span><span>&quot;</span><span>_crontab_reservation</span><span>&quot;</span><span>
    WHERE
    CASE WHEN </span><span>&quot;</span><span>_effective_glab_time</span><span>&quot;</span> != <span>&apos;</span><span>0</span><span>&apos;</span><span> THEN
    TO_DATE(</span><span>&quot;</span><span>_effective_glab_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &gt;= TO_DATE(#{start_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    AND
    TO_DATE(</span><span>&quot;</span><span>_effective_glab_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &lt;= TO_DATE(#{end_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    ELSE </span><span>1</span>=<span>1</span><span> END
    </span>&lt;<span>if</span> test=<span>&quot;</span><span>driver_id != null and driver_id !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_id</span><span>&quot;</span>=<span> #{driver_id}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_name != null and driver_name !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_name</span><span>&quot;</span> =<span> #{driver_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>mobile != null and mobile !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>mobile</span><span>&quot;</span> =<span> #{mobile}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>alliance_name != null and alliance_name !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_management_id</span><span>&quot;</span> =<span> #{alliance_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>register_city != null and register_city !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and substr(</span><span>&quot;</span><span>register_city</span><span>&quot;</span> , <span>0</span> , <span>4</span>) = substr(#{register_city} , <span>0</span> , <span>4</span><span>)
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_type != null and driver_type !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_type</span><span>&quot;</span> =<span> #{driver_type}
    </span>if&gt;<span>
    GROUP BY
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span>

    union all

    SELECT
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pushOrderNum</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>grab_sus_order</span><span>&quot;</span>)) AS <span>&quot;</span><span>grab_sus_order</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_order_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_service_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>destination_reached_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pay_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span><span>
    FROM
    </span><span>&quot;</span><span>_crontab_reservation</span><span>&quot;</span><span>
    WHERE
    CASE WHEN </span><span>&quot;</span><span>grab_sus_time</span><span>&quot;</span> != <span>&apos;</span><span>0</span><span>&apos;</span><span> THEN
    TO_DATE(</span><span>&quot;</span><span>grab_sus_time</span><span>&quot;</span> , <span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &gt;= TO_DATE(#{start_time} , <span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    AND
    TO_DATE(</span><span>&quot;</span><span>grab_sus_time</span><span>&quot;</span> , <span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &lt;= TO_DATE(#{end_time} , <span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    ELSE </span><span>1</span>=<span>1</span><span> END
    </span>&lt;<span>if</span> test=<span>&quot;</span><span>driver_id != null and driver_id !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_id</span><span>&quot;</span>=<span> #{driver_id}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_name != null and driver_name !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_name</span><span>&quot;</span> =<span> #{driver_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>mobile != null and mobile !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>mobile</span><span>&quot;</span> =<span> #{mobile}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>alliance_name != null and alliance_name !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_management_id</span><span>&quot;</span> =<span> #{alliance_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>register_city != null and register_city !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and substr(</span><span>&quot;</span><span>register_city</span><span>&quot;</span> , <span>0</span> , <span>4</span>) = substr(#{register_city} , <span>0</span> , <span>4</span><span>)
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_type != null and driver_type !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_type</span><span>&quot;</span> =<span> #{driver_type}
    </span>if&gt;<span>
    GROUP BY
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span>

    union all

    SELECT
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pushOrderNum</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>grab_sus_order</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>cancel_order_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>cancel_order_num</span><span>&quot;</span><span>,
    sum(to_number(</span><span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span><span>,
    sum(to_number(</span><span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span><span>,
    sum(to_number(</span><span>&quot;</span><span>cancel_service_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>cancel_service_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>destination_reached_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pay_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span><span>
    FROM
    </span><span>&quot;</span><span>_crontab_reservation</span><span>&quot;</span><span>
    WHERE
    CASE WHEN </span><span>&quot;</span><span>cancel_time</span><span>&quot;</span> != <span>&apos;</span><span>0</span><span>&apos;</span><span> THEN
    TO_DATE(</span><span>&quot;</span><span>cancel_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &gt;= TO_DATE(#{start_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    AND
    TO_DATE(</span><span>&quot;</span><span>cancel_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &lt;= TO_DATE(#{end_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    ELSE </span><span>1</span>=<span>1</span><span> END
    </span>&lt;<span>if</span> test=<span>&quot;</span><span>driver_id != null and driver_id !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_id</span><span>&quot;</span>=<span> #{driver_id}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_name != null and driver_name !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_name</span><span>&quot;</span> =<span> #{driver_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>mobile != null and mobile !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>mobile</span><span>&quot;</span> =<span> #{mobile}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>alliance_name != null and alliance_name !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_management_id</span><span>&quot;</span> =<span> #{alliance_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>register_city != null and register_city !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and substr(</span><span>&quot;</span><span>register_city</span><span>&quot;</span> , <span>0</span> , <span>4</span>) = substr(#{register_city} , <span>0</span> , <span>4</span><span>)
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_type != null and driver_type !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_type</span><span>&quot;</span> =<span> #{driver_type}
    </span>if&gt;<span>
    GROUP BY
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span>

    union all

    SELECT
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pushOrderNum</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>grab_sus_order</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_order_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_service_num</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>destination_reached_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>destination_reached_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pay_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span><span>
    FROM
    </span><span>&quot;</span><span>_crontab_reservation</span><span>&quot;</span><span>
    WHERE
    CASE WHEN </span><span>&quot;</span><span>close_gps_time</span><span>&quot;</span> != <span>&apos;</span><span>0</span><span>&apos;</span><span> THEN
    TO_DATE(</span><span>&quot;</span><span>close_gps_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &gt;= TO_DATE(#{start_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    AND
    TO_DATE(</span><span>&quot;</span><span>close_gps_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &lt;= TO_DATE(#{end_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    ELSE </span><span>1</span>=<span>1</span><span> END
    </span>&lt;<span>if</span> test=<span>&quot;</span><span>driver_id != null and driver_id !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_id</span><span>&quot;</span>=<span> #{driver_id}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_name != null and driver_name !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_name</span><span>&quot;</span> =<span> #{driver_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>mobile != null and mobile !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>mobile</span><span>&quot;</span> =<span> #{mobile}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>alliance_name != null and alliance_name !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_management_id</span><span>&quot;</span> =<span> #{alliance_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>register_city != null and register_city !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and substr(</span><span>&quot;</span><span>register_city</span><span>&quot;</span> , <span>0</span> , <span>4</span>) = substr(#{register_city} , <span>0</span> , <span>4</span><span>)
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_type != null and driver_type !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_type</span><span>&quot;</span> =<span> #{driver_type}
    </span>if&gt;<span>
    GROUP BY
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span>

    union all

    SELECT
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pushOrderNum</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>grab_sus_order</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_order_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_service_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>destination_reached_num</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>pay_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>pay_num</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span><span>,
    sum(to_number(</span><span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span><span>
    FROM
    </span><span>&quot;</span><span>_crontab_reservation</span><span>&quot;</span><span>
    WHERE
    CASE WHEN </span><span>&quot;</span><span>pay_time</span><span>&quot;</span> != <span>&apos;</span><span>0</span><span>&apos;</span><span> THEN
    TO_DATE(</span><span>&quot;</span><span>pay_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &gt;= TO_DATE(#{start_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    AND
    TO_DATE(</span><span>&quot;</span><span>pay_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &lt;= TO_DATE(#{end_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    ELSE </span><span>1</span>=<span>1</span><span> END
    </span>&lt;<span>if</span> test=<span>&quot;</span><span>driver_id != null and driver_id !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_id</span><span>&quot;</span>=<span> #{driver_id}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_name != null and driver_name !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_name</span><span>&quot;</span> =<span> #{driver_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>mobile != null and mobile !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>mobile</span><span>&quot;</span> =<span> #{mobile}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>alliance_name != null and alliance_name !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_management_id</span><span>&quot;</span> =<span> #{alliance_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>register_city != null and register_city !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and substr(</span><span>&quot;</span><span>register_city</span><span>&quot;</span> , <span>0</span> , <span>4</span>) = substr(#{register_city} , <span>0</span> , <span>4</span><span>)
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_type != null and driver_type !=&apos;&apos;</span><span>&quot;</span> &gt;<span>
        and </span><span>&quot;</span><span>driver_type</span><span>&quot;</span> =<span> #{driver_type}
    </span>if&gt;<span>
    GROUP BY
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span>
    ) </span><span>as</span><span> TB
    GROUP BY
    TB.</span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    TB.</span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    TB.</span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    TB.</span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    TB.</span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    TB.</span><span>&quot;</span><span>driver_type</span><span>&quot;</span>
select&gt;</pre>有问题的代码

这段代码大概就是:

select
tb."driver_id" ... ,
sum(xxx1) ,
sum(xxx2) ,
.....

from
(
 A union B union C union D union E union F union G
) as tb
group by
tb."driver_id" ...

这种操作的问题就在于:使用mybatis做union后,生成了一张表tb , 按照phoenix的官方说法是,phoenix严格区别大小写的,因此我们做完phoenix后,习惯性的在字段上加上双引号;

但是如果是使用mybatis做了集成后,union生成的表名称和字段名称,是不需要也不能在区分大小写的,因此在加双引号,就会出现字段找不到等一系列错误

解决后的代码:

记一次springboot+mybatis+phoenix在代码集成中的坑记一次springboot+mybatis+phoenix在代码集成中的坑
<select id="searchContext" resultType="com.df.entity.SearchInfo">
        SELECT
        "TB1".driver_id,
        "TB1".driver_name,
        "TB1".mobile,
        "TB1".alliance_name,
        "TB1".register_city,
        "TB1".driver_type,
        SUM("TB1".pushOrderNum) AS "pushOrderNum" ,
        SUM("TB1".effectiveSlogan) AS "effectiveSlogan",
        SUM("TB1".grab_sus_order) AS "grab_sus_order",
        SUM("TB1".cancel_order_num) AS "cancel_order_num",
        SUM("TB1".cancel_passenger_num) AS "cancel_passenger_num",
        SUM("TB1".cancel_driver_num) AS "cancel_driver_num",
        SUM("TB1".cancel_service_num) AS "cancel_service_num",
        SUM("TB1".destination_reached_num) AS "destination_reached_num",
        SUM("TB1".pay_num) AS "pay_num",
        SUM("TB1".order_cumulative_num) AS "order_cumulative_num",
        SUM("TB1".order_pay_cumulative_num) AS "order_pay_cumulative_num"
        from
        (SELECT
        "driver_id" ,
        "driver_name" ,
        "mobile" ,
        "alliance_name" ,
        "register_city" ,
        "driver_type" ,
        sum(to_number("pushOrderNum")) AS "pushOrderNum" ,
        sum(0) AS "effectiveSlogan" ,
        sum(0) AS "grab_sus_order" ,
        sum(0) AS "cancel_order_num",
        sum(0) AS "cancel_passenger_num",
        sum(0) AS "cancel_driver_num",
        sum(0) AS "cancel_service_num" ,
        sum(0) AS "destination_reached_num" ,
        sum(0) AS "pay_num" ,
        sum(0) AS "order_cumulative_num",
        sum(0) AS "order_pay_cumulative_num"
        FROM
        "_crontab_reservation"
        WHERE
        CASE WHEN "pushOrderTime" != '0' THEN
        TO_DATE("pushOrderTime",'yyyy-MM-dd') >= TO_DATE(#{start_time},'yyyy-MM-dd')
        AND
        TO_DATE("pushOrderTime",'yyyy-MM-dd') <= TO_DATE(#{end_time},'yyyy-MM-dd')
        ELSE 1=1 END
        <if test="driver_id != null and driver_id !=''">
            and "driver_id"= #{driver_id}
        if>
        <if test="driver_name != null and driver_name !=''">
            and "driver_name" = #{driver_name}
        if>
        <if test="mobile != null and mobile !=''">
            and "mobile" = #{mobile}
        if>
        <if test="alliance_name != null and alliance_name !=''">
            and "driver_management_id" = #{alliance_name}
        if>
        <if test="register_city != null and register_city !=''">
            and substr("register_city" , 0 , 4) = substr(#{register_city} , 0 , 4)
        if>
        <if test="driver_type != null and driver_type !=''">
            and "driver_type" = #{driver_type}
        if>
        GROUP BY
        "driver_id" ,
        "driver_name" ,
        "mobile" ,
        "alliance_name" ,
        "register_city" ,
        "driver_type"
    union all

    SELECT
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pushOrderNum</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span>)) AS <span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>grab_sus_order</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_order_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_service_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>destination_reached_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pay_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span><span>
    FROM
    </span><span>&quot;</span><span>_crontab_reservation</span><span>&quot;</span><span>
    WHERE
    CASE WHEN </span><span>&quot;</span><span>_effective_glab_time</span><span>&quot;</span> != <span>&apos;</span><span>0</span><span>&apos;</span><span> THEN
    TO_DATE(</span><span>&quot;</span><span>_effective_glab_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &gt;= TO_DATE(#{start_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    AND
    TO_DATE(</span><span>&quot;</span><span>_effective_glab_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &lt;= TO_DATE(#{end_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    ELSE </span><span>1</span>=<span>1</span><span> END
    </span>&lt;<span>if</span> test=<span>&quot;</span><span>driver_id != null and driver_id !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_id</span><span>&quot;</span>=<span> #{driver_id}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_name != null and driver_name !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_name</span><span>&quot;</span> =<span> #{driver_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>mobile != null and mobile !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>mobile</span><span>&quot;</span> =<span> #{mobile}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>alliance_name != null and alliance_name !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_management_id</span><span>&quot;</span> =<span> #{alliance_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>register_city != null and register_city !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and substr(</span><span>&quot;</span><span>register_city</span><span>&quot;</span> , <span>0</span> , <span>4</span>) = substr(#{register_city} , <span>0</span> , <span>4</span><span>)
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_type != null and driver_type !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_type</span><span>&quot;</span> =<span> #{driver_type}
    </span>if&gt;<span>
    GROUP BY
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span>

    union all

    SELECT
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pushOrderNum</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>grab_sus_order</span><span>&quot;</span>)) AS <span>&quot;</span><span>grab_sus_order</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_order_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_service_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>destination_reached_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pay_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span><span>
    FROM
    </span><span>&quot;</span><span>_crontab_reservation</span><span>&quot;</span><span>
    WHERE
    CASE WHEN </span><span>&quot;</span><span>grab_sus_time</span><span>&quot;</span> != <span>&apos;</span><span>0</span><span>&apos;</span><span> THEN
    TO_DATE(</span><span>&quot;</span><span>grab_sus_time</span><span>&quot;</span> , <span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &gt;= TO_DATE(#{start_time} , <span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    AND
    TO_DATE(</span><span>&quot;</span><span>grab_sus_time</span><span>&quot;</span> , <span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &lt;= TO_DATE(#{end_time} , <span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    ELSE </span><span>1</span>=<span>1</span><span> END
    </span>&lt;<span>if</span> test=<span>&quot;</span><span>driver_id != null and driver_id !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_id</span><span>&quot;</span>=<span> #{driver_id}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_name != null and driver_name !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_name</span><span>&quot;</span> =<span> #{driver_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>mobile != null and mobile !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>mobile</span><span>&quot;</span> =<span> #{mobile}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>alliance_name != null and alliance_name !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_management_id</span><span>&quot;</span> =<span> #{alliance_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>register_city != null and register_city !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and substr(</span><span>&quot;</span><span>register_city</span><span>&quot;</span> , <span>0</span> , <span>4</span>) = substr(#{register_city} , <span>0</span> , <span>4</span><span>)
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_type != null and driver_type !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_type</span><span>&quot;</span> =<span> #{driver_type}
    </span>if&gt;<span>
    GROUP BY
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span>

    union all

    SELECT
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pushOrderNum</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>grab_sus_order</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>cancel_order_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>cancel_order_num</span><span>&quot;</span><span>,
    sum(to_number(</span><span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span><span>,
    sum(to_number(</span><span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span><span>,
    sum(to_number(</span><span>&quot;</span><span>cancel_service_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>cancel_service_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>destination_reached_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pay_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span><span>
    FROM
    </span><span>&quot;</span><span>_crontab_reservation</span><span>&quot;</span><span>
    WHERE
    CASE WHEN </span><span>&quot;</span><span>cancel_time</span><span>&quot;</span> != <span>&apos;</span><span>0</span><span>&apos;</span><span> THEN
    TO_DATE(</span><span>&quot;</span><span>cancel_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &gt;= TO_DATE(#{start_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    AND
    TO_DATE(</span><span>&quot;</span><span>cancel_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &lt;= TO_DATE(#{end_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    ELSE </span><span>1</span>=<span>1</span><span> END
    </span>&lt;<span>if</span> test=<span>&quot;</span><span>driver_id != null and driver_id !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_id</span><span>&quot;</span>=<span> #{driver_id}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_name != null and driver_name !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_name</span><span>&quot;</span> =<span> #{driver_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>mobile != null and mobile !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>mobile</span><span>&quot;</span> =<span> #{mobile}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>alliance_name != null and alliance_name !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_management_id</span><span>&quot;</span> =<span> #{alliance_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>register_city != null and register_city !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and substr(</span><span>&quot;</span><span>register_city</span><span>&quot;</span> , <span>0</span> , <span>4</span>) = substr(#{register_city} , <span>0</span> , <span>4</span><span>)
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_type != null and driver_type !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_type</span><span>&quot;</span> =<span> #{driver_type}
    </span>if&gt;<span>
    GROUP BY
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span>

    union all

    SELECT
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pushOrderNum</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>grab_sus_order</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_order_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_service_num</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>destination_reached_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>destination_reached_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pay_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span><span>
    FROM
    </span><span>&quot;</span><span>_crontab_reservation</span><span>&quot;</span><span>
    WHERE
    CASE WHEN </span><span>&quot;</span><span>close_gps_time</span><span>&quot;</span> != <span>&apos;</span><span>0</span><span>&apos;</span><span> THEN
    TO_DATE(</span><span>&quot;</span><span>close_gps_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &gt;= TO_DATE(#{start_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    AND
    TO_DATE(</span><span>&quot;</span><span>close_gps_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &lt;= TO_DATE(#{end_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    ELSE </span><span>1</span>=<span>1</span><span> END
    </span>&lt;<span>if</span> test=<span>&quot;</span><span>driver_id != null and driver_id !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_id</span><span>&quot;</span>=<span> #{driver_id}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_name != null and driver_name !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_name</span><span>&quot;</span> =<span> #{driver_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>mobile != null and mobile !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>mobile</span><span>&quot;</span> =<span> #{mobile}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>alliance_name != null and alliance_name !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_management_id</span><span>&quot;</span> =<span> #{alliance_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>register_city != null and register_city !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and substr(</span><span>&quot;</span><span>register_city</span><span>&quot;</span> , <span>0</span> , <span>4</span>) = substr(#{register_city} , <span>0</span> , <span>4</span><span>)
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_type != null and driver_type !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_type</span><span>&quot;</span> =<span> #{driver_type}
    </span>if&gt;<span>
    GROUP BY
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span>

    union all

    SELECT
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>pushOrderNum</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>effectiveSlogan</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>grab_sus_order</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_order_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_passenger_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_driver_num</span><span>&quot;</span><span>,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>cancel_service_num</span><span>&quot;</span><span> ,
    sum(</span><span>0</span>) AS <span>&quot;</span><span>destination_reached_num</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>pay_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>pay_num</span><span>&quot;</span><span> ,
    sum(to_number(</span><span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>order_cumulative_num</span><span>&quot;</span><span>,
    sum(to_number(</span><span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span>)) AS <span>&quot;</span><span>order_pay_cumulative_num</span><span>&quot;</span><span>
    FROM
    </span><span>&quot;</span><span>_crontab_reservation</span><span>&quot;</span><span>
    WHERE
    CASE WHEN </span><span>&quot;</span><span>pay_time</span><span>&quot;</span> != <span>&apos;</span><span>0</span><span>&apos;</span><span> THEN
    TO_DATE(</span><span>&quot;</span><span>pay_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &gt;= TO_DATE(#{start_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    AND
    TO_DATE(</span><span>&quot;</span><span>pay_time</span><span>&quot;</span>,<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span>) &lt;= TO_DATE(#{end_time},<span>&apos;</span><span>yyyy-MM-dd</span><span>&apos;</span><span>)
    ELSE </span><span>1</span>=<span>1</span><span> END
    </span>&lt;<span>if</span> test=<span>&quot;</span><span>driver_id != null and driver_id !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_id</span><span>&quot;</span>=<span> #{driver_id}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_name != null and driver_name !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_name</span><span>&quot;</span> =<span> #{driver_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>mobile != null and mobile !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>mobile</span><span>&quot;</span> =<span> #{mobile}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>alliance_name != null and alliance_name !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_management_id</span><span>&quot;</span> =<span> #{alliance_name}
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>register_city != null and register_city !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and substr(</span><span>&quot;</span><span>register_city</span><span>&quot;</span> , <span>0</span> , <span>4</span>) = substr(#{register_city} , <span>0</span> , <span>4</span><span>)
    </span>if&gt;
    &lt;<span>if</span> test=<span>&quot;</span><span>driver_type != null and driver_type !=&apos;&apos;</span><span>&quot;</span>&gt;<span>
        and </span><span>&quot;</span><span>driver_type</span><span>&quot;</span> =<span> #{driver_type}
    </span>if&gt;<span>
    GROUP BY
    </span><span>&quot;</span><span>driver_id</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>mobile</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>alliance_name</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>register_city</span><span>&quot;</span><span> ,
    </span><span>&quot;</span><span>driver_type</span><span>&quot;</span><span>
    ) AS </span><span>&quot;</span><span>TB1</span><span>&quot;</span><span>
    GROUP BY
    </span><span>&quot;</span><span>TB1</span><span>&quot;</span><span>.driver_id ,
    </span><span>&quot;</span><span>TB1</span><span>&quot;</span><span>.driver_name ,
    </span><span>&quot;</span><span>TB1</span><span>&quot;</span><span>.mobile ,
    </span><span>&quot;</span><span>TB1</span><span>&quot;</span><span>.alliance_name ,
    </span><span>&quot;</span><span>TB1</span><span>&quot;</span><span>.register_city ,
    </span><span>&quot;</span><span>TB1</span><span>&quot;</span><span>.driver_type
</span>select&gt;</pre>解决后的代码

Original: https://www.cnblogs.com/niutao/articles/11234564.html
Author: niutao
Title: 记一次springboot+mybatis+phoenix在代码集成中的坑

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/534114/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球