如果元素不需要,如何添加条件子句?

How can I add condition clause not required if element?

假设我的界面看起来像这样。

@Mapper
interface UserMapper {
    List<User> search(@Nullable String namePattern, int minAge); 
}

如何使用不需要 <if/> 元素的 minAge 参数?

我应该只用 <if test="true"/> 吗?

<where>
  <if test="namePattern != null">
    name LIKE #{namePattern}
  </if>
  <if test="true"> <!-- just true??? -->
    AND age >= #{minAge}
  </if>
</where>

我可以剥离第二个 <if/> 元素吗?

<where>
  <if test="namePattern != null">
    name LIKE #{namePattern}
  </if>
  AND age >= #{minAge} <!-- will it blend? -->
</where>

当然可以。 <where /> 删除了不必要的 AND,所以它应该可以工作。

另一种方法是将age条件写在<if />前面。

WHERE age >= #{minAge}
<if test="namePattern != null">
  AND name LIKE #{namePattern}
</if>