1. If元素
使用<if>元素可以根据条件包含或排除部分SQL语句:
<select id="getUser" parameterType="map" resultType="User">
SELECT * FROM users
WHERE 1=1
<if test="id != null">
AND id = #{id}
</if>
<if test="username != null">
AND username = #{username}
</if>
</select>
在上面的例子中,<if> 元素用于根据传递的参数来动态生成查询条件。
2. Choose、When、Otherwise元素
<choose>元素类似于Java中的switch语句,它可以包含多个<when>元素和一个可选的<otherwise>元素。根据条件,只有其中一个分支会被包含在SQL语句中:
<select id="getUser" parameterType="map" resultType="User">
SELECT * FROM users
<where>
<choose>
<when test="id != null">
AND id = #{id}
</when>
<when test="username != null">
AND username = #{username}
</when>
<otherwise>
AND 1=1
</otherwise>
</choose>
</where>
</select>
3. Trim元素
<trim>元素可以用于处理SQL语句的前缀和后缀。例如,可以使用它来处理WHERE子句的动态拼接:
<select id="getUser" parameterType="map" resultType="User">
SELECT * FROM users
<trim prefix="WHERE" prefixOverrides="AND | OR">
<if test="id != null">
AND id = #{id}
</if>
<if test="username != null">
AND username = #{username}
</if>
</trim>
</select>
在上述例子中,<trim>元素的prefix属性设置了WHERE关键字,而prefixOverrides属性指定了要移除的前缀,以处理动态拼接的问题。
这些只是MyBatis动态SQL的一些基本用法。通过结合<foreach>元素、<set>元素等,你可以构建更加复杂和灵活的SQL语句,以适应不同的查询需求。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7017/MyBatis