在 MyBatis 中,动态 SQL 可以使用 XML 中的一些特殊元素来实现条件判断、循环等动态构建 SQL 语句的功能。以下是 MyBatis 中常用的动态 SQL 元素:
- if 元素: 用于条件判断,根据条件动态拼接 SQL 语句。
<select id="getUserByCondition" parameterType="map" resultType="User">
SELECT * FROM users
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
- choose、when、otherwise 元素: 类似于 switch-case 的选择结构。
<select id="getUserByCondition" parameterType="map" resultType="User">
SELECT * FROM users
<where>
<choose>
<when test="name != null">
AND name = #{name}
</when>
<when test="age != null">
AND age = #{age}
</when>
<otherwise>
AND status = 'active'
</otherwise>
</choose>
</where>
</select>
- trim、where、set 元素: 用于处理 SQL 语句中的空白字符。
<update id="updateUser" parameterType="User">
UPDATE users
<set>
<if test="name != null">name = #{name},</if>
<if test="age != null">age = #{age},</if>
</set>
WHERE id = #{id}
</update>
- foreach 元素: 用于循环处理集合,生成 IN 子句。
<select id="getUsersByIdList" parameterType="map" resultType="User">
SELECT * FROM users WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
这些动态 SQL 元素可以帮助开发者根据条件、集合等动态构建 SQL 语句,使得 SQL 的生成更加灵活和便捷。
Was this helpful?
0 / 0