MyBatis提供了一些動態SQL標簽,可以根據條件來動態地生成SQL語句。以下是常用的動態SQL標簽和它們的使用方法:
<if>
標簽:用于條件判斷,只有當條件成立時才會執行其中的SQL語句。
<select id="selectUser" parameterType="int" resultType="User">
SELECT * FROM user
WHERE 1=1
<if test="id != null">
AND id = #{id}
</if>
</select>
<choose>
、<when>
和<otherwise>
標簽:類似于Java中的switch語句,可以根據條件選擇執行不同的SQL語句。
<select id="selectUser" parameterType="int" resultType="User">
SELECT * FROM user
WHERE 1=1
<choose>
<when test="id != null">
AND id = #{id}
</when>
<when test="name != null">
AND name = #{name}
</when>
<otherwise>
AND age > 18
</otherwise>
</choose>
</select>
<foreach>
標簽:用于循環遍歷集合或數組,并生成相應的SQL語句。
<select id="selectUsers" parameterType="List" resultType="User">
SELECT * FROM user
WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
<where>
和<set>
標簽:用于動態生成WHERE和SET子句。
<update id="updateUser" parameterType="User">
UPDATE user
<set>
<if test="name != null">
name = #{name},
</if>
<if test="age != null">
age = #{age},
</if>
</set>
WHERE id = #{id}
</update>
以上是一些常用的動態SQL標簽的使用方法,根據具體的需求選擇合適的標簽來動態生成SQL語句。