在 MyBatis 中,可以使用 <if>
元素來對查詢語句中的條件進(jìn)行判斷。<if>
元素可以根據(jù)條件是否成立來決定是否包含某部分 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>
元素用來判斷傳入的參數(shù) username
和 age
是否為空,如果不為空,則將對應(yīng)的條件加入到 SQL 查詢語句中。注意 <if>
元素中的 test
屬性是條件判斷的表達(dá)式,可以使用任何合法的 Java 表達(dá)式。
除了 <if>
元素外,MyBatis 還提供了 <choose> <when> <otherwise>
結(jié)構(gòu)來實(shí)現(xiàn)條件判斷。示例如下:
<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>
元素用來定義默認(rèn)的情況。