Skip to content

where

<where>可以自动帮你处理 WHERE 和 AND/OR 拼接问题

为什么要用 <where>

你如果不用 <where>,通常要这样写:

xml
SELECT * FROM user
WHERE 1=1

<if test="name != null">
    AND name = #{name}
</if>

where的作用

自动加 WHERE

  • 如果内部有条件 → 自动加 WHERE

  • 如果没有条件 → 不加

xml
<select id="queryUser" resultType="User">
    SELECT * FROM user

    <where>
        <if test="name != null and name != ''">
            AND name = #{name}
        </if>

        <if test="age != null">
            AND age = #{age}
        </if>
    </where>
</select>

自动去掉开头的 AND / OR

xml
<where>
    <if test="name != null">
        AND name = #{name}
    </if>
</where>

最终SQL:

WHERE name = ?