当使用mybatis时,是否可以跳过更新<set>?

  • 本文关键字:更新 set mybatis 是否 java mybatis
  • 更新时间 :
  • 英文 :


在使用Mybatis时,动态SQL非常强大,例如更新:

<update id="update">
  UPDATE BOOKS
  <set>
    <if test="book.author != null">AUTHOR=#{book.author},</if>
    <if test="book.name != null">NAME=#{book.name}</if>
  </set>
  WHERE ID=#{book.id}
</update>

当作者或名称不是null时,这起作用,当两个null时它都失败,因为SQL具有语法错误。

我的问题:当<set>之间的所有测试失败时,是否可以跳过更新,或者我必须编写额外的Java代码才能在执行update语句之前检查?

不可能使用XML元素进行跳过语句执行。

如果您只想避免编写Java条件,则包括SET子句中的ID可能就足够了。

UPDATE BOOKS
SET
  ID = #{book.id}
  <if test="book.author != null">, AUTHOR=#{book.author}</if>
  <if test="book.name != null">, NAME=#{book.name}</if>
WHERE ID = #{book.id}

相关内容

最新更新