我如何在 MyBatis 上使用更新语句使用 <if> 语句
How could I use update statement using <if> statement on MyBatis
我想知道如何使用 if 语句,如下例
<update id="update"
parameterType="com.MyClass">
UPDATE
Board SET Status = 1
<where>
<if test="A != null and A.length() > 0">AND A = ${A}</if>
</where>
</update>
此语句在 A!=null 且 A.length() > 0 时有效。
但如果 A==null,则更新整行设置 1,因为没有 where 条件。
有没有什么办法可以在条件合适的情况下更新,否则跳过或忽略?
谢谢
<update id="update"
parameterType="com.MyClass">
UPDATE
Board SET Status = 1
<where>
<choose>
<when test="A != null and A.length() > 0">
AND A = ${A}
</when>
<otherwise>
AND 0 = 1
</otherwise>
</choose>
</where>
</update>
在条件 0 = 1 的情况下,where 失败并且没有完成任何更新
<update id="update"
parameterType="com.MyClass">
UPDATE
Board SET Status = 1
<where>
<![CDATA[<if test="A != null and A.length() > 0">AND A = ${A}</if>]]>
</where>
</update>
最好试试 CDATA
我想知道如何使用 if 语句,如下例
<update id="update"
parameterType="com.MyClass">
UPDATE
Board SET Status = 1
<where>
<if test="A != null and A.length() > 0">AND A = ${A}</if>
</where>
</update>
此语句在 A!=null 且 A.length() > 0 时有效。
但如果 A==null,则更新整行设置 1,因为没有 where 条件。
有没有什么办法可以在条件合适的情况下更新,否则跳过或忽略?
谢谢
<update id="update"
parameterType="com.MyClass">
UPDATE
Board SET Status = 1
<where>
<choose>
<when test="A != null and A.length() > 0">
AND A = ${A}
</when>
<otherwise>
AND 0 = 1
</otherwise>
</choose>
</where>
</update>
在条件 0 = 1 的情况下,where 失败并且没有完成任何更新
<update id="update"
parameterType="com.MyClass">
UPDATE
Board SET Status = 1
<where>
<![CDATA[<if test="A != null and A.length() > 0">AND A = ${A}</if>]]>
</where>
</update>
最好试试 CDATA