在 MyBatis 中,可以使用 <if>
元素来对查询语句中的条件进行判断。<if>
元素可以根据条件是否成立来决定是否包含某部分 SQL 语句。下面是一个简单的示例:
<select id="selectUsers" parameterType="map" resultType="User">
SELECT * FROM users
<where>
<if test="username != null">
AND username = #{username}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
在上面的示例中,<if>
元素用来判断传入的参数 username
和 age
是否为空,如果不为空,则将对应的条件加入到 SQL 查询语句中。注意 <if>
元素中的 test
属性是条件判断的表达式,可以使用任何合法的 Java 表达式。
除了 <if>
元素外,MyBatis 还提供了 <choose> <when> <otherwise>
结构来实现条件判断。示例如下:
<select id="selectUsers" parameterType="map" resultType="User">
SELECT * FROM users
<where>
<choose>
<when test="username != null">
AND username = #{username}
</when>
<when test="age != null">
AND age = #{age}
</when>
<otherwise>
AND 1=1
</otherwise>
</choose>
</where>
</select>
在这个示例中,<choose>
元素用来选择条件成立的分支,<when>
元素用来定义具体的条件判断,<otherwise>
元素用来定义默认的情况。