我有这个查询
<update id="updateRow">
update
ROW
set
DISPLAY_ID = #{displayId}
<where>
<include refid="rowCriteria" />
</where>
</update>
<sql id="rowCriteria">
<if test="criteria.displayId} != null">
DISPLAY_ID=#{criteria.displayId}
</if>
<if test="criteria.id != null">
and ID=#{criteria.id}
</if>
</sql>
以及执行的地方
Preparing: update ROW set DISPLAY_ID = ? WHERE ID=?
Parameters: 72312(Long), 72991(Long)
我收到此错误
但如果我删除&#39;和&#39;来自标准ID
<sql id="rowCriteria">
<if test="criteria.displayId} != null">
DISPLAY_ID=#{criteria.displayId}
</if>
<if test="criteria.id != null">
ID=#{criteria.id}
</if>
</sql>
查询运行正确并执行更新
我的问题是,如果我在条件中有和密钥,有时候我会收到错误,有时候更新会正常运行?
答案 0 :(得分:0)
两件事:
删除超出的}
。
使用AND
为每个条件添加前缀。 &lt;在哪里&gt;标签将永远删除第一个。
AND DISPLAY_ID =#{criteria.displayId} 和ID =#{criteria.id}