- <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>元素会被忽略。