出错的sql代码段:
UPDATE `agent`
SET `name`=#{name},
`areacode`=#{areacode},
`address`=#{address},
`linkman`=#{linkman},
`tel`=#{tel},
`staff_type`=${staffType},
`station_ids`=#{stationIds},
`username`=#{username},
`account_blocked`=#{accountBlocked}
WHERE `id`=#{id};
<if test="password!=null and password!=''">
UPDATE `agent` SET `password`=#{password} WHERE `id`=#{id};
</if>
使用mybatis,在进行数据库查询的时候出现了这个错误:
com.alibaba.druid.filter.stat.StatFilter:148 - merge sql error, dbType postgresql, sql :
网上搜了一下,大多有两种说法:
1.把druid.stat.mergeSql设置为false就可以了。但是经过实测并不能解决,仍然会报错。
2.把语句里面的表名和属性名全部用``号包起来以避免和sql关键字冲突。实测不能解决,仍然会报错
后来我百度百科里查了一下,mergeSql属性在mysql里是没有用的,mysql并不支持merge,所以修改之后不会有任何作用。
接着分析代码,滤了一遍又一遍,发现一个地方有点不一样:
`staff_type`=${staffType},
这地方用的是$符号不是#号,修改成#号之后,问题解决。
但是依稀记得之前使用#号后面的数字做更新是做不到的,所以改成了#号,现在更改回来了又可以了,费解。