我怎么能使用更新语句 MyBatis上的声明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我怎么能使用更新语句 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会很高兴

以上是关于我怎么能使用更新语句 MyBatis上的声明的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server:合并语句的更新部分不起作用

Mybatis 批量更新 ORA-00911: 无效字符的错误

旧访问更新声明

已声明且未使用 - 如何更新 IF 语句中的变量

mybatis update返回值 怎么配置

spring+mybatis一个方法执行多条更新语句,实现批量DML