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

场景:
希望使用phoenix做查询服务,给服务端提供接口
设计:
通过springboot做restful的接口发布,通过mybatis做phoenix的sql处理,因此是springboot+mybatis+phoenix的集成方案;
但是会遇到一个坑!
=========================================我是华丽的分割线=====================================================
先简单汇报下场景:
做网约车的预约单查询处理,如图:

这里面需要使用一个时间窗口查询6种时间:推送订单时间、有效抢单时间、抢单成功时间、取消订单时间、达到目的地时间、支付时间
这里可能遇到一个问题:跨天支付!
因此为了解决跨天支付,需要在处理好的基表基础上做6次查询 ,分别对应不同的查询时间,然后做union处理,最后在求和(注意:就是在最后在求和的地方出错!!!!!)
先看下有问题的代码:
<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() AS "effectiveSlogan" ,
sum() AS "grab_sus_order" ,
sum() AS "cancel_order_num",
sum() AS "cancel_passenger_num",
sum() AS "cancel_driver_num",
sum() AS "cancel_service_num" ,
sum() AS "destination_reached_num" ,
sum() AS "pay_num" ,
sum() AS "order_cumulative_num",
sum() AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "pushOrderTime" != '' 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 = 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" , , ) = substr(#{register_city} , , )
</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
"driver_id" ,
"driver_name" ,
"mobile" ,
"alliance_name" ,
"register_city" ,
"driver_type" ,
sum() AS "pushOrderNum" ,
sum(to_number("effectiveSlogan")) AS "effectiveSlogan" ,
sum() AS "grab_sus_order" ,
sum() AS "cancel_order_num",
sum() AS "cancel_passenger_num",
sum() AS "cancel_driver_num",
sum() AS "cancel_service_num" ,
sum() AS "destination_reached_num" ,
sum() AS "pay_num" ,
sum() AS "order_cumulative_num",
sum() AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "_effective_glab_time" != '' THEN
TO_DATE("_effective_glab_time",'yyyy-MM-dd') >= TO_DATE(#{start_time},'yyyy-MM-dd')
AND
TO_DATE("_effective_glab_time",'yyyy-MM-dd') <= TO_DATE(#{end_time},'yyyy-MM-dd')
ELSE = 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" , , ) = substr(#{register_city} , , )
</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
"driver_id" ,
"driver_name" ,
"mobile" ,
"alliance_name" ,
"register_city" ,
"driver_type" ,
sum() AS "pushOrderNum" ,
sum() AS "effectiveSlogan" ,
sum(to_number("grab_sus_order")) AS "grab_sus_order" ,
sum() AS "cancel_order_num",
sum() AS "cancel_passenger_num",
sum() AS "cancel_driver_num",
sum() AS "cancel_service_num" ,
sum() AS "destination_reached_num" ,
sum() AS "pay_num" ,
sum() AS "order_cumulative_num",
sum() AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "grab_sus_time" != '' THEN
TO_DATE("grab_sus_time" , 'yyyy-MM-dd') >= TO_DATE(#{start_time} , 'yyyy-MM-dd')
AND
TO_DATE("grab_sus_time" , 'yyyy-MM-dd') <= TO_DATE(#{end_time} , 'yyyy-MM-dd')
ELSE = 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" , , ) = substr(#{register_city} , , )
</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
"driver_id" ,
"driver_name" ,
"mobile" ,
"alliance_name" ,
"register_city" ,
"driver_type" ,
sum() AS "pushOrderNum" ,
sum() AS "effectiveSlogan" ,
sum() AS "grab_sus_order" ,
sum(to_number("cancel_order_num")) AS "cancel_order_num",
sum(to_number("cancel_passenger_num")) AS "cancel_passenger_num",
sum(to_number("cancel_driver_num")) AS "cancel_driver_num",
sum(to_number("cancel_service_num")) AS "cancel_service_num" ,
sum() AS "destination_reached_num" ,
sum() AS "pay_num" ,
sum() AS "order_cumulative_num",
sum() AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "cancel_time" != '' THEN
TO_DATE("cancel_time",'yyyy-MM-dd') >= TO_DATE(#{start_time},'yyyy-MM-dd')
AND
TO_DATE("cancel_time",'yyyy-MM-dd') <= TO_DATE(#{end_time},'yyyy-MM-dd')
ELSE = 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" , , ) = substr(#{register_city} , , )
</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
"driver_id" ,
"driver_name" ,
"mobile" ,
"alliance_name" ,
"register_city" ,
"driver_type" ,
sum() AS "pushOrderNum" ,
sum() AS "effectiveSlogan" ,
sum() AS "grab_sus_order" ,
sum() AS "cancel_order_num",
sum() AS "cancel_passenger_num",
sum() AS "cancel_driver_num",
sum() AS "cancel_service_num" ,
sum(to_number("destination_reached_num")) AS "destination_reached_num" ,
sum() AS "pay_num" ,
sum() AS "order_cumulative_num",
sum() AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "close_gps_time" != '' THEN
TO_DATE("close_gps_time",'yyyy-MM-dd') >= TO_DATE(#{start_time},'yyyy-MM-dd')
AND
TO_DATE("close_gps_time",'yyyy-MM-dd') <= TO_DATE(#{end_time},'yyyy-MM-dd')
ELSE = 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" , , ) = substr(#{register_city} , , )
</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
"driver_id" ,
"driver_name" ,
"mobile" ,
"alliance_name" ,
"register_city" ,
"driver_type" ,
sum() AS "pushOrderNum" ,
sum() AS "effectiveSlogan" ,
sum() AS "grab_sus_order" ,
sum() AS "cancel_order_num",
sum() AS "cancel_passenger_num",
sum() AS "cancel_driver_num",
sum() AS "cancel_service_num" ,
sum() AS "destination_reached_num" ,
sum(to_number("pay_num")) AS "pay_num" ,
sum(to_number("order_cumulative_num")) AS "order_cumulative_num",
sum(to_number("order_pay_cumulative_num")) AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "pay_time" != '' THEN
TO_DATE("pay_time",'yyyy-MM-dd') >= TO_DATE(#{start_time},'yyyy-MM-dd')
AND
TO_DATE("pay_time",'yyyy-MM-dd') <= TO_DATE(#{end_time},'yyyy-MM-dd')
ELSE = 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" , , ) = substr(#{register_city} , , )
</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"
) as TB
GROUP BY
TB."driver_id" ,
TB."driver_name" ,
TB."mobile" ,
TB."alliance_name" ,
TB."register_city" ,
TB."driver_type"
</select>
有问题的代码
这段代码大概就是:
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生成的表名称和字段名称,是不需要也不能在区分大小写的,因此在加双引号,就会出现字段找不到等一系列错误
解决后的代码:
<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() AS "effectiveSlogan" ,
sum() AS "grab_sus_order" ,
sum() AS "cancel_order_num",
sum() AS "cancel_passenger_num",
sum() AS "cancel_driver_num",
sum() AS "cancel_service_num" ,
sum() AS "destination_reached_num" ,
sum() AS "pay_num" ,
sum() AS "order_cumulative_num",
sum() AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "pushOrderTime" != '' 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 = 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" , , ) = substr(#{register_city} , , )
</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
"driver_id" ,
"driver_name" ,
"mobile" ,
"alliance_name" ,
"register_city" ,
"driver_type" ,
sum() AS "pushOrderNum" ,
sum(to_number("effectiveSlogan")) AS "effectiveSlogan" ,
sum() AS "grab_sus_order" ,
sum() AS "cancel_order_num",
sum() AS "cancel_passenger_num",
sum() AS "cancel_driver_num",
sum() AS "cancel_service_num" ,
sum() AS "destination_reached_num" ,
sum() AS "pay_num" ,
sum() AS "order_cumulative_num",
sum() AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "_effective_glab_time" != '' THEN
TO_DATE("_effective_glab_time",'yyyy-MM-dd') >= TO_DATE(#{start_time},'yyyy-MM-dd')
AND
TO_DATE("_effective_glab_time",'yyyy-MM-dd') <= TO_DATE(#{end_time},'yyyy-MM-dd')
ELSE = 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" , , ) = substr(#{register_city} , , )
</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
"driver_id" ,
"driver_name" ,
"mobile" ,
"alliance_name" ,
"register_city" ,
"driver_type" ,
sum() AS "pushOrderNum" ,
sum() AS "effectiveSlogan" ,
sum(to_number("grab_sus_order")) AS "grab_sus_order" ,
sum() AS "cancel_order_num",
sum() AS "cancel_passenger_num",
sum() AS "cancel_driver_num",
sum() AS "cancel_service_num" ,
sum() AS "destination_reached_num" ,
sum() AS "pay_num" ,
sum() AS "order_cumulative_num",
sum() AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "grab_sus_time" != '' THEN
TO_DATE("grab_sus_time" , 'yyyy-MM-dd') >= TO_DATE(#{start_time} , 'yyyy-MM-dd')
AND
TO_DATE("grab_sus_time" , 'yyyy-MM-dd') <= TO_DATE(#{end_time} , 'yyyy-MM-dd')
ELSE = 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" , , ) = substr(#{register_city} , , )
</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
"driver_id" ,
"driver_name" ,
"mobile" ,
"alliance_name" ,
"register_city" ,
"driver_type" ,
sum() AS "pushOrderNum" ,
sum() AS "effectiveSlogan" ,
sum() AS "grab_sus_order" ,
sum(to_number("cancel_order_num")) AS "cancel_order_num",
sum(to_number("cancel_passenger_num")) AS "cancel_passenger_num",
sum(to_number("cancel_driver_num")) AS "cancel_driver_num",
sum(to_number("cancel_service_num")) AS "cancel_service_num" ,
sum() AS "destination_reached_num" ,
sum() AS "pay_num" ,
sum() AS "order_cumulative_num",
sum() AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "cancel_time" != '' THEN
TO_DATE("cancel_time",'yyyy-MM-dd') >= TO_DATE(#{start_time},'yyyy-MM-dd')
AND
TO_DATE("cancel_time",'yyyy-MM-dd') <= TO_DATE(#{end_time},'yyyy-MM-dd')
ELSE = 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" , , ) = substr(#{register_city} , , )
</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
"driver_id" ,
"driver_name" ,
"mobile" ,
"alliance_name" ,
"register_city" ,
"driver_type" ,
sum() AS "pushOrderNum" ,
sum() AS "effectiveSlogan" ,
sum() AS "grab_sus_order" ,
sum() AS "cancel_order_num",
sum() AS "cancel_passenger_num",
sum() AS "cancel_driver_num",
sum() AS "cancel_service_num" ,
sum(to_number("destination_reached_num")) AS "destination_reached_num" ,
sum() AS "pay_num" ,
sum() AS "order_cumulative_num",
sum() AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "close_gps_time" != '' THEN
TO_DATE("close_gps_time",'yyyy-MM-dd') >= TO_DATE(#{start_time},'yyyy-MM-dd')
AND
TO_DATE("close_gps_time",'yyyy-MM-dd') <= TO_DATE(#{end_time},'yyyy-MM-dd')
ELSE = 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" , , ) = substr(#{register_city} , , )
</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
"driver_id" ,
"driver_name" ,
"mobile" ,
"alliance_name" ,
"register_city" ,
"driver_type" ,
sum() AS "pushOrderNum" ,
sum() AS "effectiveSlogan" ,
sum() AS "grab_sus_order" ,
sum() AS "cancel_order_num",
sum() AS "cancel_passenger_num",
sum() AS "cancel_driver_num",
sum() AS "cancel_service_num" ,
sum() AS "destination_reached_num" ,
sum(to_number("pay_num")) AS "pay_num" ,
sum(to_number("order_cumulative_num")) AS "order_cumulative_num",
sum(to_number("order_pay_cumulative_num")) AS "order_pay_cumulative_num"
FROM
"_crontab_reservation"
WHERE
CASE WHEN "pay_time" != '' THEN
TO_DATE("pay_time",'yyyy-MM-dd') >= TO_DATE(#{start_time},'yyyy-MM-dd')
AND
TO_DATE("pay_time",'yyyy-MM-dd') <= TO_DATE(#{end_time},'yyyy-MM-dd')
ELSE = 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" , , ) = substr(#{register_city} , , )
</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"
) AS "TB1"
GROUP BY
"TB1".driver_id ,
"TB1".driver_name ,
"TB1".mobile ,
"TB1".alliance_name ,
"TB1".register_city ,
"TB1".driver_type
</select>
解决后的代码
记一次springboot+mybatis+phoenix在代码集成中的坑的更多相关文章
- 【MyBatis】MyBatis自动生成代码查询之爬坑记
前言 项目使用SSM框架搭建Web后台服务,前台后使用restful api,后台使用MyBatisGenerator自动生成代码,在前台使用关键字进行查询时,遇到了一些很宝贵的坑,现记录如下.为展示 ...
- springboot mybatis 自动生成代码(maven+IntelliJ IDEA)
1.在pom文件中加入需要的依赖(mybatis-generator-core) 和 插件(mybatis-generator-maven-plugin) <dependency> < ...
- 使用springboot mybatis 查询时实体类中的驼峰字段值为null
看到返回结果以后主要分析了一下情况: 实体类的get.set方法确实 mapper.xml文件中的resultMap.resultType等原因导致 数据库中数据存在问题 经过检查与验证发现以上都不存 ...
- springboot mybatis 后台框架平台 集成代码生成器 shiro 权限
1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...
- springboot+Mybatis+MySql 一个update标签中执行多条update sql语句
Mysql是不支持这种骚操作的,但是不代表并不能实现,只需要在jdbc配置文件中稍微做一下修改就行. driver=com.mysql.jdbc.Driver url=jdbc:mysql://127 ...
- Springboot+mybatis+dbcp+mysql简单集成
1.添加依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>m ...
- 工作中Hadoop,Spark,Phoenix,Impala 集群中遇到坑及解决方案
1.HDFS 修复 问题描述:其他部门在yarn平台上跑spark 程序错误的生成了海量的不到100K的小文件,导致namenode压力过大,其中一个namenode宕机后,没有及时发现 使得edit ...
- HBase 学习之路(十一)—— Spring/Spring Boot + Mybatis + Phoenix 整合
一.前言 使用Spring+Mybatis操作Phoenix和操作其他的关系型数据库(如Mysql,Oracle)在配置上是基本相同的,下面会分别给出Spring/Spring Boot 整合步骤,完 ...
- HBase 系列(十一)—— Spring/Spring Boot + Mybatis + Phoenix 整合
一.前言 使用 Spring+Mybatis 操作 Phoenix 和操作其他的关系型数据库(如 Mysql,Oracle)在配置上是基本相同的,下面会分别给出 Spring/Spring Boot ...
随机推荐
- MyBatis 源码篇-Transaction
本章简单介绍一下 MyBatis 的事务模块,这块内容比较简单,主要为后面介绍 mybatis-spring-1.**.jar(MyBatis 与 Spring 集成)中的事务模块做准备. 类图结构 ...
- 复习最短路 spfa+dijstra堆优化
题目很简单,, 但是wa了三次,, 用<vector>之前一定要记得clear()...简单说下 spfa的问题 和bell_forman有点类似 每次取出一个点 然后更新 并把更新了的节 ...
- QQ浏览器、搜狗浏览器等兼容模式下,Asp.NetCore下,Cookie、Session失效问题
原文:QQ浏览器.搜狗浏览器等兼容模式下,Asp.NetCore下,Cookie.Session失效问题 这些狗日的浏览器在兼容模式下,保存Cookie会失败,是因为SameSiteMode默认为La ...
- LeetCode 腾讯精选50题--求众数
由于众数是指数组中相同元素的个数超过数组长度的一半,所以有两种思路,一. 先排序,后取排序后的数组的中间位置的值:二. 统计,设定一个变量统计相同元素出现的次数,遍历数组,若与选定的元素相同,统计变量 ...
- go语言入门(6)复合类型
1,分类 2,指针 指针是一个代表着某个内存地址的值.这个内存地址往往是在内存中存储的另一个变量的值的起始位置. 1)基本操作 Go语言虽然保留了指针,但与其它编程语言不同的是: 默认值 nil,没有 ...
- JavaSpring【六、AOP的API】
AOP API Spring1.2历史用法,现在仍然支持 现在xml配置和注解的用法是基于API的,只是比较简便
- kolla-ansible 部署多region
目录 kolla-ansible 部署多region 一.前言 二.部署架构 三.部署细节 1.部署RegionOne 2.部署RegionTwo kolla-ansible 部署多region 一. ...
- Async 配置线程池
需要注意一下 ThreadPoolTaskExecutor 和 Executor 区别 @Configuration public class ExecutorConfig { /** Set t ...
- QT学习之深入了解信号槽
槽函数和普通的 C++成员函数没有很大的区别.它们也可以使 virtual 的:可以被重写:可以使 public.protected 或者 private 的:可以由其它的 C++函数调用:参数可以是 ...
- MyBatis-09-Lombok
9.Lombok Project Lombok is a java library that automatically plugs into your editor and build tools, ...