我如何在 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