MyBatis中的動態SQL可以通過if
、choose
、when
、otherwise
、trim
、where
、set
、foreach
等標簽實現。以下是一些常用的動態SQL示例:
if
標簽實現條件判斷:<select id="findUser" parameterType="map" resultType="User">
SELECT * FROM user
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null">
AND name = #{name}
</if>
</where>
</select>
trim
標簽處理SQL語句中的多余的AND或OR:<select id="findUser" parameterType="map" resultType="User">
SELECT * FROM user
<where>
<trim prefix="AND" prefixOverrides="AND">
<if test="id != null">
id = #{id}
</if>
<if test="name != null">
AND name = #{name}
</if>
</trim>
</where>
</select>
choose
、when
、otherwise
標簽實現條件選擇:<select id="findUser" parameterType="map" resultType="User">
SELECT * FROM user
<where>
<choose>
<when test="id != null">
AND id = #{id}
</when>
<when test="name != null">
AND name = #{name}
</when>
<otherwise>
AND status = 1
</otherwise>
</choose>
</where>
</select>
foreach
標簽處理集合參數的循環:<select id="findUserByIds" parameterType="list" resultType="User">
SELECT * FROM user
WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
通過以上示例,可以根據不同的條件動態拼接SQL語句,實現靈活的查詢操作。在實際開發中,可以根據具體需求結合不同的標簽來編寫動態SQL。