在 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>
元素用來定義默認的情況。