WHERE子句 ‹where›

Exisi 2021-03-27 07:29:17
Categories: Tags:
  • <where> 通常用于在 SQL 语句中添加条件语句。它可以自动移除WHERE关键字前面多余的 AND OR 关键字,并在必要的情况下添加 WHERE 关键字。

示例

<select id="findActiveBlogLike" resultType="Blog">

SELECT * from user

WHERE
<if test="
id != null">

id = #{id}

</if>
<if test="
role != null">

AND role like #{role}

</if>

</select>

 

  • 如果这些条件没有一个能匹配上将会怎样?最终这条 SQL 会变成这样:

SELECT * FROM BLOG
WHERE

  • 这会导致查询失败。如果仅仅第二个条件匹配又会怎样?这条 SQL 最终会是这样

SELECT * FROM BLOG
WHERE

AND role like '1'

示例

<select id="findActiveBlogLike" resultType="Blog">

SELECT * from user

WHERE
<if test="
id != null">

id = #{id}

</if>
<if test="
role != null">

AND role like #{role}

</if>

 

</select>

 

这时我们可以嵌套 <where> 语句控制 sql 语句

示例

<select id="findActiveBlogLike" resultType="User">

SELECT * from user

<where>

<if test="id != null">

id = #{id}

</if>
<if test="
role != null">

AND role like #{role}

</if>

</where>

</select>

<where>元素只有在其中包含至少一个子元素时才会生效。如果所有子元素都没有生效,则<where>元素会被忽略。