在使用mybatis时,编写sqlmap脚本的时候,有时候会遇到很奇怪的问题:
比如:
#{imei,jdbcType=VARCHAR} as IMEI,
如果写成如下的方式,即在等于号两边有空格的话,就会报错。
#{imei,jdbcType = VARCHAR} as IMEI,
特此mark一下,留做纪念!
merge into DMS_MULTI_TASK_RESULT m
using (select #{taskId,jdbcType=NUMERIC} as TASK_ID,
#{subPolicyId,jdbcType=NUMERIC} as SUB_POLICY_ID,
#{msisdn,jdbcType=VARCHAR} as MSISDN,
#{manuId,jdbcType=NUMERIC} as MANU_ID,
#{modelId,jdbcType=NUMERIC} as MODEL_ID,
#{imei,jdbcType=VARCHAR} as IMEI,
#{swVersion,jdbcType=VARCHAR} as SW_VERSION,
#{pkgId,jdbcType=NUMERIC} as PKG_ID,
#{operation,jdbcType=NUMERIC} as OPERATION,
#{startTime,jdbcType=TIMESTAMP} as START_TIME,
#{endTime,jdbcType=TIMESTAMP} as END_TIME,
#{result,jdbcType=NUMERIC} as RESULT,
#{status,jdbcType=NUMERIC} as STATUS,
#{description,jdbcType=VARCHAR} as DESCRIPTION,
#{reportStatus,jdbcType=NUMERIC} as REPORT_STATUS,
#{readerStep,jdbcType=NUMERIC} as READER_STEP,
SYSDATE as INSERT_TIME,
#{provId,jdbcType=NUMERIC} as PROV_ID,
#{cityId,jdbcType=NUMERIC} as CITY_ID
from dual) n
on (m.task_id = n.task_id)
when not matched then
insert
(TASK_ID,
SUB_POLICY_ID,
MSISDN,
MANU_ID,
MODEL_ID,
IMEI,
SW_VERSION,
PKG_ID,
OPERATION,
START_TIME,
END_TIME,
RESULT,
STATUS,
DESCRIPTION,
REPORT_STATUS,
READER_STEP,
INSERT_TIME,
PROV_ID,
CITY_ID)
values
(n.TASK_ID,
n.SUB_POLICY_ID,
n.MSISDN,
n.MANU_ID,
n.MODEL_ID,
n.IMEI,
n.SW_VERSION,
n.PKG_ID,
n.OPERATION,
n.START_TIME,
n.END_TIME,
n.RESULT,
n.STATUS,
n.DESCRIPTION,
n.REPORT_STATUS,
n.READER_STEP,
n.INSERT_TIME,
n.PROV_ID,
n.CITY_ID)
when matched then
update
set m.SUB_POLICY_ID = n.SUB_POLICY_ID,
m.MSISDN = n.MSISDN,
m.MANU_ID = n.MANU_ID,
m.MODEL_ID = n.MODEL_ID,
m.IMEI = n.IMEI,
m.SW_VERSION = n.SW_VERSION,
m.PKG_ID = n.PKG_ID,
m.OPERATION = n.OPERATION,
m.START_TIME = n.START_TIME,
m.END_TIME = n.END_TIME,
m.RESULT = n.RESULT,
m.STATUS = n.STATUS,
m.DESCRIPTION = n.DESCRIPTION,
m.REPORT_STATUS = n.REPORT_STATUS,
m.READER_STEP = n.READER_STEP,
m.INSERT_TIME = n.INSERT_TIME,
m.PROV_ID = n.PROV_ID,
m.CITY_ID = n.CITY_ID