MyBatis提供了一個<sql>
元素來定義SQL片段,而<include>
元素可以引用這些SQL片段。因此,在動態SQL中使用<sql>
元素定義需要分隔的SQL片段,然后在需要引入這些片段的地方使用<include>
元素即可。
例如,假設有一個需要動態拼接WHERE條件的SQL語句,可以先通過<sql>
元素定義這個WHERE條件的SQL片段:
<sql id="whereClause">
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</sql>
然后在需要引入這個WHERE條件的地方使用<include>
元素:
<select id="selectUser" parameterType="map" resultType="User">
SELECT * FROM user
<if test="_parameter != null">
WHERE
<include refid="whereClause"/>
</if>
</select>
這樣就可以實現動態SQL和分隔SQL片段的配合使用。