MyBatis动态标签用于在SQL语句中根据不同条件生成不同的SQL片段,以实现动态的SQL查询。
常用的MyBatis动态标签包括:
<if>
标签:用于在SQL语句中添加条件判断,默认情况下,如果条件为false,则该标签中的SQL片段将被忽略。示例:
<select id="getUserList" 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>
标签:用于提供多个选择条件,类似于Java中的switch语句。示例:
<select id="getUserList" 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>
和<set>
标签:用于在生成动态SQL时添加条件判断,以及去除生成SQL中的不必要的逗号或AND关键字。示例:
<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>
通过使用这些动态标签,我们可以根据不同的条件生成不同的SQL语句,使得SQL查询更加灵活和可复用。