我在尝试插入数据库时结合 PostgreSQL 设置 Mybathis 3,发现一个令人不快的特性:请求中形成空字符串而不是 null - ' ',这就是实际请求下降的原因。
### The error may involve process_message.insert-Inline
### The error occurred while setting parameters
### SQL:
insert into UTP_PROCESS_MESSAGE (
SYSTEM_ID,
PROCESS_MESSAGE_DATA,
PROCESS_ID,
OPERATION_TYPE_ID
) VALUES **(
,
,
,
)**
### Cause: org.postgresql.util.PSQLException: ERROR: syntax error at or near ","
Позиция: 167
我希望请求以不同的方式形成:
insert into UTP_PROCESS_MESSAGE (
SYSTEM_ID,
PROCESS_MESSAGE_DATA,
PROCESS_ID,
OPERATION_TYPE_ID
) VALUES **(
null,
null,
null,
null
)**
如果您传递特定值,则一切正常。
我这样设置参数:
HashMap <String, Long> params = new HashMap<String, Long>();
params.put("systemId", null);
params.put("messageData", null);
params.put("processId", null);
params.put("operationTypeId", null);
session.insert("process_message.insert", params);
SQL 查询如下所示:
<insert id="insert" parameterType="Map">
insert into UTP_PROCESS_MESSAGE (
SYSTEM_ID,
PROCESS_MESSAGE_DATA,
PROCESS_ID,
OPERATION_TYPE_ID
) VALUES (
${systemId,javaType=Long,jdbcType=BIGINT},
${messageData,javaType=String,jdbcType=VARCHAR},
${processId,javaType=Long,jdbcType=BIGINT},
${operationTypeId,javaType=Long,jdbcType=BIGINT}
)
</insert>
我已经用尽了所有假设。有什么问题?
好吧,我一发布问题,我自己就注意到出了什么问题……我希望这对其他人有所帮助。问题是注意力不集中:$符号必须换成#,像这样: